2Dプロジェクト作成手順⑤:衝突処理(RigidBody)
前回記事はこちら。
さて、今回からはさらにゲームエンジンの真骨頂である物理エンジンを使っていく。
物理エンジンを最大に使うためにはRigidBodyを使用する。
前回までに作ったものに対し、RigidBodyのノードを追加する。
作成したRigidBodyノードに対し、前回同様衝突判定エリアとIconを設定しよう。
だいたいこのあたりに配置する。(適当で良い)
GDScriptを作成する。今回は物体に最初の速度(初速度)だけ定義して後は重力や物理法則に従って動くようなものにしよう。
RigidBodyの"速度"にあたるものは"linear_velocity"である。ちなみに細かいテクニックとして、①GDScriptをアタッチしているNodeを選択、②Scriptモードにした後、③制御したいパラメータを選択して記述したい場所にドラック&ドロップしてくることで、パラメータ名を挿入することが出来る。※文字列として挿入されるので、"は削除しよう。
いちいちパラメータ名を細かく覚えなくて良いので、基本的にはこのパラメータテーブルから引っ張ってくる記載方法がおすすめ。(極力覚えることは少なくすると効率的に作業できる)
RigidBody2Dのlinear_velocityは2次元ベクトルのパラメータなので、Vector2(x,y)で値を代入する。右上に飛ばしたいのでVector(200、-200)としておこう。
初速度なので、_readyで定義しよう。_processのほうで定義すると毎フレームごとにVector2(200、-200)が代入されてしまうので、物理法則を無視してただ右上に飛んでいくだけになってしまう。
この状態で実行すると右上に放物線を描いて飛んだ後、壁にぶつかって落下していく動作になる。(位置によっては上のKinematicBodyと衝突するかも)
また、毎フレームごとの速度を出力すると、空気抵抗や重力でリアルタイムに速度が勝手に変化していっていることがわかる。
ちなみにこれは毎フレームごとに出力しているが、速度は3フレームごとに更新されている。
※設定で変えられる方法はあるが、今のところこういうものだと思ってもらえれば良い。
ここまででごく基本的な動かす/衝突させるようなプロジェクトの作り方の解説は終わりとなる。次回はここまでに作ったもののうち、GDScriptで書いたものを一切プログラミングを書かず制御を組むことができるVisualScriptと呼ばれる手法を解説する。