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

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

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

いつもひよこのたまごをご利用下さいましてありがとうございます!
おかげ様でチュートリアル数も10ゲーム目となりました!
チュートリアル一覧は
こちら からどうぞ!


スポンサーリンク

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)】