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