2017-03-20 3 views
1

あなたはレイキャストでそれを防ぐことができると私が読んだ(Wまたはスペース)を押しても私のキャラクターは飛び跳ねることができますが、その方法はわかりません。Unity2Dがキャラクターをマルチジャンプから守る

private Rigidbody2D myRigidBody2D; 
void Start() { 

    myRigidBody2D = GetComponent<Rigidbody2D>(); 

} 

private void Update() 
{ 
    if (Input.GetButtonDown("Jump")) 
    { 
     myRigidBody2D.AddForce(new Vector2(0, jumpForce)); 
    } 
} 

答えて

2

私ははい、あなたはしかし、あなたはおそらくproblemsに実行されることができ、あなたがレイキャスト

でそれを防止することができることを読んだ:これは私の文字のコードである(これはプラットフォーマーゲームです)それはまだ修正することができます。

これを行う最善の方法は、ブール変数を使用して、文字が地面に接触しているかどうかを確認することです。この変数は、OnCollisionEnter2DOnCollisionExit2Dの関数でtrueまたはfalseに設定できます。

Create a tagGround」と呼ばれます。あなたのゲームオブジェクトをすべてこのタグに変更すると、以下の例では複数のジャンプを防ぐことができます。

bool isGrounded = true; 

private float jumpForce = 2f; 
private Rigidbody2D myRigidBody2D; 

void Start() 
{ 

    myRigidBody2D = GetComponent<Rigidbody2D>(); 

} 

private void Update() 
{ 
    if (Input.GetButtonDown("Jump") && isGrounded) 
    { 
     myRigidBody2D.AddForce(new Vector2(0, jumpForce)); 
    } 
} 

void OnCollisionEnter2D(Collision2D collision) 
{ 
    if (collision.gameObject.CompareTag("Ground")) 
    { 
     isGrounded = true; 
    } 
} 

void OnCollisionExit2D(Collision2D collision) 
{ 
    if (collision.gameObject.CompareTag("Ground")) 
    { 
     isGrounded = false; 
    } 
} 
関連する問題