ひつじを動かそう その2 のバックアップ(No.3)


はじめに

ステージを作るの続きです。

 

これまでに羊をキー入力で操作できるようにして、ステージまで制作しました。
しかし今のままでは、ひつじの動きとステージがあっていませんね。
そのでこのページでは、ゲームに合わせたひつじの動きの完成版を作りましょう。

 

本格的にひつじを動かそう

 

現段階ではひつじはA,Dキーの入力で左右に動かせるだけです。
しかしこれでは、ゲームになりません。
あと必要そうな機能は、

1.重力の力を受ける。
2.キー入力に合わせてひつじの向きを変える。
3.キー入力でジャンプする。
4.ひつじにカメラ・背景が追従する。

  があります。
では、1つずつ実装していきましょう。

 

ひつじに重力を与える

 

これは一度プロジェクトの作成でやりましたね。
ひつじのオブジェクトにインスペクターから「RigitBody2D」のコンポーネントを追加します。
追加の方法は覚えているでしょうか。
インスペクターの一番下にある「AddComponrnt」から「RigitBody2D」を探してクリックしてやればいいんでしたね。
これで重力が追加されたはずです。
実際動かしてみましょう。
ちゃんと、ステージのうえに立って、キー入力で左右に動くようになりましたか?

 

しかし今の段階では、いくつか問題があるんです。
その問題というのは

① 坂を上り下りしようとするとひつじが回転してしまう。
② 壁に突っ込むとめり込んでしまう恐れがある。

というものです。

 

①の問題は、坂に当たった時の物理演算をz軸に関しても行っているせいで坂とひつじの間の摩擦力によって回転してしまうのです。
そのため、z軸に関する物理演算を止めてあげる、つまり、ひつじをz軸回転しないように固定してあげる必要があります。
固定する方法は簡単で、ひつじのインスペクターからRigidBody2D > Constraints > FreezeRotation > Z にチェックを入れてあげます。
これだけです。

 

②の問題は、「RigitBody2D」の物理演算の結果が、ひつじを左右に動かそうとするときに再計算されて衝突計算が無効になってしまうせいで起こります。
詳しく説明すると、「RigitBody2D」の物理演算はプログラミングの中にあるUpdate関数よりも先に計算されるようになっており、Update関数の中にある「Transform.position」による移動で衝突計算を再計算するようになっているんです。
この問題を解決するには、Update関数内で移動の計算を行わないようにしなければなりません。
ということで、以前作成したひつじを動かすプログラムの「MoveSeap.cs」を直していきます。

 
 

キー入力で左右で反転させる

 
 

ジャンプできるようにする

#br

 

次は、キー入力によるジャンプ機能を追加します。