ユーザ用ツール

サイト用ツール

wiki:unity:tips:069

差分

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

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

次のリビジョン
前のリビジョン
wiki:unity:tips:069 [2014/11/13 09:02]
127.0.0.1 外部編集
— (現在)
ライン 1: ライン 1:
-====== 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.1415869348.txt.gz · 最終更新: 2015/01/06 14:16 (外部編集)

oeffentlich