こんちにちはmorimori(@TatsunoriMorita)です。
前回は平面認識した場所にプレーンオブジェクトを配置し、四角形オブジェクトを落下させてみました。
最終的にはテトリスっぽいものを作って行きたいので、今のままでは落下する四角形オブジェクトの速度が早すぎるため、遅くなるように調整してみたいと思います。
落下スピードを変える方法
落下する重力を変更する方法を考えましたが、SCNPhysicsBodyには重力を変更するプロパティはありません。
代わりにmassプロパティで質量を変更できるので、デフォルトの1Kgから0Kgへ変更したところ、落下を停止することができました。
ただ、限りなく0に近づけても落下スピードが減速させることはできませんでした。
数学と物理を高校で捨てた頭ではよくわからない。。。
調べてみるとシーン内の重力設定自体を変更する方法を発見!
その値を変更すれば、落下する四角形オブジェクトの速度を変更することが可能に。
ただし、物理演算の対象にしているため、オブジェクト同士が衝突した反発で勝手に移動してしまう。
テトリスのように、ブロックを積んでいくには不向きなので、現実世界の重力を使わずにアニメーションでブロックを移動させる方が良さそうです。
コード全体
まとめ
今回はシーン内の重力を変更することで、オブジェクトの落下スピードを変更しました。
他にも空気抵抗を変更することで、落下スピードを変更できると教えてくださる方がいて、大変勉強になりました。
発信する人のところに情報が集まるというのは本当ですね。
落下速度は重さでは変わらないはずですよ、空気抵抗で変わるはずです
— kiyo (@DHorkin) 2018年12月16日
テトリスの作り方を調べたところ、マス割されたフィールドの上から下にブロックの表示を切り替えて表現することを知ったので、その方法で試して行きたいと思います。