我想在Unity 2D中制作2D平台游戏,我希望我的玩家可以进行双跳,因此他可以在空中再跳一次,但不能再跳了。他降落了,我不知道该怎么做
[实现“双跳”功能有很多方法。最直接的就是这个:
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字段来检查玩家是否已经跳了两次,但是使用整数可以为您提供更灵活的解决方案,以防您将来要更改游戏设计(例如:让用户使用上电时跳三下)。
希望这会有所帮助!
没有尝试这段代码,只是想让我的想法被理解:
int nbJumps = 0;
void Update()
{
if (Input.GetKeyDown("space") && nbJumps < 2)
{
//jump here
nbJumps++;
}
if (playerCollider.IsTouching(groundCollider))
{
nbJumps = 0;
}
}