双跳Unity 2D

时间:2020-02-19 15:00:56

标签: c# unity3d

我想用Unity 2D制作2D平台游戏,我希望我的玩家可以做一个双跳系统,这样他可以在空中再跳一次,但是不能再跳了直到他降落下来,我也不知道该怎么做

2 个答案:

答案 0 :(得分:1)

有很多方法可以实现“双跳”功能。最直接的就是这个:

public int maxJumps = 2;

private int jumps;
private float jumpForce = 5f;

void Update()
{
    if(Input.GetKeyDown(KeyCode.Space) || Input.GetKeyDown(KeyCode.W))
    {
        this.Jump ();
    }
}

private void Jump()
{
    if (jumps > 0)
    {
        gameObject.GetComponent<Rigidbody2D> ().AddForce (new Vector2 (0, jumpForce), ForcMode2D.Impulse);
        grounded = false;
        jumps = jumps - 1;
    }
    if (jumps == 0)
    {
        return;
    }
}
void OnCollisionEnter2D(Collision2D collider)
{
    if(collider.gameObject.tag == "Ground")
    {
        jumps = maxJumps;
        grounded = true;
        movespeed = 2.0F;                                                            
     }                                                                                
 }

请注意,您可以使用另一个bool字段来检查玩家是否已经跳了两次,但是使用整数可以为您提供更灵活的解决方案,以防您将来要更改游戏设计(例如:用户在使用加电功能时跳了3次。

希望这会有所帮助!

答案 1 :(得分:0)

没有尝试这段代码,只是想让我的想法被理解:

int nbJumps = 0;

void Update()
{
    if (Input.GetKeyDown("space") && nbJumps < 2)
    {
        //jump here
        nbJumps++;
    }

    if (playerCollider.IsTouching(groundCollider))
    {
        nbJumps = 0;
    }
}