内容へ移動
ユーザ用ツール
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
現在位置:
Home
»
wiki
»
Unity
»
Tips
»
069 2段ジャンプを実装する(AddForceを使った場合)
トレース:
wiki:unity:tips:069
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== 069 2段ジャンプを実装する(AddForceを使った場合) ====== ===== 概要 ===== 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.txt
· 最終更新: 2015/01/06 14:16 by
step
ページ用ツール
ログイン
文書の表示
文書の先頭へ
印刷
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
oeffentlich