Double Jump Unity 2D

问题描述 投票:-1回答:2

我想在Unity 2D中制作2D平台游戏,我希望我的玩家可以进行双跳,因此他可以在空中再跳一次,但不能再跳了。他降落了,我不知道该怎么做

c# unity3d
2个回答
0
投票

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

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字段来检查玩家是否已经跳了两次,但是使用整数可以为您提供更灵活的解决方案,以防您将来要更改游戏设计(例如:让用户使用上电时跳三下)。

希望这会有所帮助!


0
投票

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

int nbJumps = 0;

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

    if (playerCollider.IsTouching(groundCollider))
    {
        nbJumps = 0;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.