ぬるぽ

ゆるくプログラミングなどを語っていくブログ

ARKit入門 その5

f:id:nooootion:20181222095652p:plain

 

 

こんちにちはmorimori(@TatsunoriMorita)です。

 

 

前回は平面認識した場所にプレーンオブジェクトを配置し、四角形オブジェクトを落下させてみました。

最終的にはテトリスっぽいものを作って行きたいので、今のままでは落下する四角形オブジェクトの速度が早すぎるため、遅くなるように調整してみたいと思います。

 

 

落下スピードを変える方法

落下する重力を変更する方法を考えましたが、SCNPhysicsBodyには重力を変更するプロパティはありません。

代わりにmassプロパティで質量を変更できるので、デフォルトの1Kgから0Kgへ変更したところ、落下を停止することができました。

ただ、限りなく0に近づけても落下スピードが減速させることはできませんでした。

数学と物理を高校で捨てた頭ではよくわからない。。。

 

 

調べてみるとシーン内の重力設定自体を変更する方法を発見!

その値を変更すれば、落下する四角形オブジェクトの速度を変更することが可能に。

f:id:nooootion:20181222095848p:plain

 

 

ただし、物理演算の対象にしているため、オブジェクト同士が衝突した反発で勝手に移動してしまう。

テトリスのように、ブロックを積んでいくには不向きなので、現実世界の重力を使わずにアニメーションでブロックを移動させる方が良さそうです。

 

 

コード全体

github.com

 

まとめ

今回はシーン内の重力を変更することで、オブジェクトの落下スピードを変更しました。

他にも空気抵抗を変更することで、落下スピードを変更できると教えてくださる方がいて、大変勉強になりました。

発信する人のところに情報が集まるというのは本当ですね。

f:id:nooootion:20181222095915p:plain

 

テトリスの作り方を調べたところ、マス割されたフィールドの上から下にブロックの表示を切り替えて表現することを知ったので、その方法で試して行きたいと思います。