ユーザ用ツール

サイト用ツール

wiki:unity:tips:069

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

次のリビジョン
前のリビジョン
wiki:unity:tips:069 [2014/11/13 09:02]
127.0.0.1 外部編集
wiki:unity:tips:069 [2015/02/23 12:45] (現在)
ライン 1: ライン 1:
-====== 069 2段ジャンプを実装する(AddForceを使った場合) ====== +[[http://stepism.sakura.ne.jp/unity/wiki/|Unityこちら移動しました。]]
- +
-===== 概要 ===== +
-rigidbody.AddForceを使って2段ジャンプを実装します。 +
-2段目のジャンプを1段目と同じ挙動にするためにはrigidbody.velocity を初期化します。 +
- +
-==== 3Dの場合 ==== +
-<code csharp>​ +
-using UnityEngine;​ +
-using System.Collections;​ +
- +
-public class Player ​MonoBehaviour +
-+
- public const int MAX_JUMP_COUNT = 2; // ジャンプできる回数。 +
- public float force = 5.0f; +
-  +
- private int jumpCount = 0; +
- private bool isJump = false; +
-  +
- void Update() +
-+
- // クリックでジャンプ。 +
- if( jumpCount < MAX_JUMP_COUNT && Input.GetMouseButtonDown(0) ) +
-+
- isJump = true; +
-+
-+
-  +
- void FixedUpdate() +
-+
- if( isJump ) +
-+
- // 速度をクリアして2回目のジャンプも1回目と同じ挙動にする。 +
- rigidbody.velocity = Vector3.zero; +
-  +
- // ジャンプさせる。 +
- rigidbody.AddForce( Vector3.up * force, ForceMode.Impulse ); +
-  +
- // ジャンプ回数をカウント。 +
- jumpCount++;​ +
-  +
- // ジャンプを許可する。 +
- isJump = false; +
-+
-+
-  +
- private void OnCollisionEnter( Collision collision ) +
-+
- // 地面との当たり。 +
- if (collision.gameObject.name == "​Floor"​) +
-+
- jumpCount = 0; +
-+
-+
-+
-</​code>​ +
- +
- +
-操作するPlayerのGameObjectに当たり判定用Box Collider、物理属性付加のためRigidBodyコンポーネントを追加ていす。 +
-地面となるFloorのGameObjectにはBox Collider コンポーネントのみ追加ています。 +
- +
-==== 2Dの場合 ==== +
-3Dとの違いは当り判定や物理属性付加に、2D用のrigidbody2DとBox Collider2Dを使っている点です +
-ジャンプに加える力forceも2D用に調整している点に注目して下さい。 +
- +
-<code csharp>​ +
-using UnityEngine;​ +
-using System.Collections;​ +
- +
-public class Player : MonoBehaviour +
-+
- private const int MAX_JUMP_COUNT = 2; // ジャンプできる回数。 +
- private float force = 250.0f; +
-  +
- private int jumpCount = 0; +
- private bool isJump = false; +
-  +
- void Update() +
-+
- // クリックでジャンプ。 +
- if( jumpCount < MAX_JUMP_COUNT && Input.GetMouseButtonDown(0) ) +
-+
- isJump = true; +
-+
-+
-  +
- void FixedUpdate() +
-+
- if( isJump ) +
-+
- // 速度をクリアした2回目のジャンプも1回目と同じ挙動にする。 +
- rigidbody2D.velocity = Vector2.zero;​ +
-  +
- // ジャンプさせる。 +
- rigidbody2D.AddForce( Vector2.up * force ); +
-  +
- // ジャンプ回数をカウント。 +
- jumpCount++;​ +
-  +
- // ジャンプを許可する。 +
- isJump = false; +
-+
-+
-  +
- private void OnCollisionEnter2D( Collision2D collision ) +
-+
- if (collision.gameObject.name == "​Floor"​) +
-+
- jumpCount = 0; +
-+
-+
-+
-</​code>​ +
- +
Permalink wiki/unity/tips/069.1415869348.txt.gz · 最終更新: 2015/01/06 14:16 (外部編集)

oeffentlich