【Unity1】クリックでジャンプ!AddForce, GetButtonDown【ユニティちゃん縦スクロール3】
Unity5.1.1f1 Personal(2015年6月)
このコンテンツは、『ユニティちゃんライセンス』で提供されています
前回に続きゲームを作っていきます〜
キャラを自動で動かし、壁にぶつかった時に反転するようになりましたので、今回はジャンプさせてみたいと思います〜
【目標】キャラクターをジャンプさせる
それではいきなりですが、ソースを貼ってしまいます〜
①着地している時以外はジャンプしないようにする
まずは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に設定しましたので、以下の画像のようなラインが引かれています〜
Bottomから上に1、下に0.1のライン
それではCube(地面)のLayerにGroundを設定します〜
InspectorビューのLayer>Add Layer
Groundレイヤー追加
Inspectorビューに戻りGroundレイヤーを指定
続いてPlayerのInspectorビューから、public変数であるGround Layerに今作ったGroundレイヤーを指定します〜
Groundレイヤー指定
条件の2つ目としてGetButtonDownがあります〜これはキーボードの"Jump"を押した時に条件を満たしますが、Jumpは何を表しているのでしょう〜
実はJumpボタンには、スペースキーが指定されています〜
Edit>ProjectSettings>Inputから確認できます〜
Inputから確認
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にして、再度地面に着地するまで力を加えないようにしています〜
【結果】
ジャンプ!
無事にジャンプさせることができました〜
が、壁にぶつかるとひっくり返ってしまいます〜
変な角度になる
ユニティちゃんのInspector>Rigidbody2DにあるConstraintsの、Freeze Rotation.zにチェックを入れることで、壁に衝突しても角度を変えず、姿勢を保ったままにできます〜
Freeze Rotationにチェック
もう一度挑戦・・・
今度は無事ひっくり返らずにジャンプできました〜
今回はここまでです〜
ありがとうございました〜
【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】