Unity(C#)初心者・入門者向けチュートリアル ひよこのたまご

AndroidやiOS向けアプリを簡単に作れるゲーム開発環境Unity(ユニティ)の使い方を、チュートリアル方式で一緒に学びましょう!

【Unity1】クリックでジャンプ!AddForce, GetButtonDown【ユニティちゃん縦スクロール3】

Unity5.1.1f1 Personal(2015年6月)

 

f:id:hiyotama:20150622010040p:plain

ユニティちゃんライセンス

このコンテンツは、『ユニティちゃんライセンス』で提供されています

 

前回に続きゲームを作っていきます〜

 

キャラを自動で動かし、壁にぶつかった時に反転するようになりましたので、今回はジャンプさせてみたいと思います〜

 【目標】キャラクターをジャンプさせる

 

それではいきなりですが、ソースを貼ってしまいます〜

 

 

①着地している時以外はジャンプしないようにする

まずはUpdateメソッドです〜

クリック判定等1フレーム飛ばされた時に実行されない可能性がある処理は、FixedUpdateではなくUpdateメソッド内に記述しましょう〜(移動処理等定量的な処理はFixedUpdateに記述)

 

Updateメソッド内でJumpメソッドを呼び出していますが、その条件として①isGroundedがtrueである②Jumpボタンをクリックするの2つが記述されています〜

 

条件の1つ目であるisGroundedをtrueにするために、Linecastというメソッドを使っています〜これは、第1引数第2引数の2点間にラインを引いて、そのラインに第3引数に指定したLayerを持つオブジェクトがあった場合、trueを返します〜

引数で使われているtransform.positionはオブジェクトのPivot(基点)から考えています〜今回の場合は前々回にPivotをBottomに設定しましたので、以下の画像のようなラインが引かれています〜

 

f:id:hiyotama:20150622120838p:plain

Bottomから上に1、下に0.1のライン

 

それではCube(地面)のLayerにGroundを設定します〜

 

f:id:hiyotama:20150622121715p:plain

InspectorビューのLayer>Add Layer

 

f:id:hiyotama:20150622121744p:plain

Groundレイヤー追加

 

f:id:hiyotama:20150622121805p:plain

Inspectorビューに戻りGroundレイヤーを指定

 

続いてPlayerのInspectorビューから、public変数であるGround Layerに今作ったGroundレイヤーを指定します〜

 

f:id:hiyotama:20150622121929p:plain

Groundレイヤー指定 

 

条件の2つ目としてGetButtonDownがあります〜これはキーボードの"Jump"を押した時に条件を満たしますが、Jumpは何を表しているのでしょう〜

実はJumpボタンには、スペースキーが指定されています〜

Edit>ProjectSettings>Inputから確認できます〜

 

f:id:hiyotama:20150622121259p:plain

Inputから確認

 

f:id:hiyotama:20141201075706p:plain

Jump = spaceキーはデフォルトで設定されている

 

以上でユニティちゃんが地面に着地しており、スペースキーを押した時、Jumpメソッドが実行されるようになりました〜

 

②クリック時に上方向へ力を加える 

続いてJumpメソッドの中を見ていきます〜色んな方向に力を加える、AddForceという関数を使っています〜

 

今回はVector2.upで上方向へ力を加え、ジャンプを表しています〜

同様にVector2.leftで左、Vector2.rightで右、Vector2.downで下に力が加わります〜また、このVector2というのは2次元の方向(縦横)を表しているのですが、Unityで3Dゲームを作る時はVector3を使います!3Dの場合は奥行きもあるので・・・Vector3.backで奥へ、Vector3.forwardで手前に力が加わります!余談でした〜

 

気を取り直しまして、jumpForce変数で指定した分だけキャラクターは大きくジャンプします〜今回は500で設定していますが、好きな数に変更してみて下さい〜

 

最後にジャンプをした時点でisGroundedをfalseにして、再度地面に着地するまで力を加えないようにしています〜

 

 【結果】

 f:id:hiyotama:20150622123005p:plain

ジャンプ! 

 

無事にジャンプさせることができました〜

が、壁にぶつかるとひっくり返ってしまいます〜

 

f:id:hiyotama:20150622123042p:plain

変な角度になる

 

ユニティちゃんのInspector>Rigidbody2DにあるConstraintsの、Freeze Rotation.zにチェックを入れることで、壁に衝突しても角度を変えず、姿勢を保ったままにできます〜

 

f:id:hiyotama:20150622123221p:plain

Freeze Rotationにチェック

 

もう一度挑戦・・・

 

f:id:hiyotama:20150622123321p:plain

 

今度は無事ひっくり返らずにジャンプできました〜

 

今回はここまでです〜

ありがとうございました〜

 

【Unity開発1】キャラクターを自動で移動させる【ユニティちゃん横スクロールアクション2D:1/11】

【Unity開発1】壁にぶつかった時にキャラクターを反転させる【ユニティちゃん横スクロールアクション2D:2/11】

【Unity開発1】キャラクターをジャンプさせる!【ユニティちゃん横スクロールアクション2D:3/11】

【Unity開発1】キャラクターをカメラが追いかける!【ユニティちゃん横スクロールアクション2D:4/11】

【Unity開発1】uGUIを使って点数を表示する!【ユニティちゃん横スクロールアクション2D:5/11】

【Unity開発1】タイトル画面とゲームオーバー画面を作る!【ユニティちゃん横スクロール2D:6/11】

【Unity開発1】アニメーションを付ける!【ユニティちゃん横スクロールアクション2D:7/11】

【Unity開発1】バグ発見!無限にジャンプできちゃう!【ユニティちゃん横スクロールアクション2D:8/11】

【Unity開発1】ボタン長押しでジャンプ力を強くしたい!【ユニティちゃん横スクロール2D:9/11】

【Unity開発1】足場を下から突き抜けて、そのまま乗っかりたい!【ユニティちゃん横スクロールアクション2D:10/11】

【Unity開発1】ランダムで足場を自動生成する【ユニティちゃん横スクロールアクション2D:11/11(Fin)】