【问题标题】:Unity2D preventing character from multi-jumpingUnity2D防止角色多跳
【发布时间】:2017-03-20 17:55:56
【问题描述】:

我的角色可以在你按下时跳跃(W 或空格)我已经读到你可以使用 Raycast 来阻止它,但我不明白该怎么做。这是我的角色代码(这是一个平台游戏):

private Rigidbody2D myRigidBody2D;
void Start () {

    myRigidBody2D = GetComponent<Rigidbody2D>();

}

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

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    我了解到您可以使用 Raycast 来阻止它

    是的,您可以,但您可能会遇到problems,它仍然可以修复。

    最好的方法是使用一个布尔变量来检查角色是否接触到地面。您可以在OnCollisionEnter2DOnCollisionExit2D 函数中将此变量设置为truefalse

    Create a tag 称为“Ground”。将所有地面游戏对象更改为此标签,然后下面的示例应防止多次跳跃。

    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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多