如图,实现这样的效果 其实非常简单,就两个必要条件
触发:一定是按下触发
跳跃次数:一定大于0
声明跳跃次数
public int jumpCount;//多段跳次数
还有一个可以优化的点,就是如果你想角色的多段跳可以有第一次跳的那么高,不受物理下落速度的抵消影响,就在每次进入的时候重置一下垂直速度
跳跃逻辑
if(Input.GetKeyDown(KeyCode.Z)&& playerData.jumpCount>0){playerRb.velocity = new Vector2(playerRb.velocity.x, 0);//重置二段跳的垂直速度playerRb.AddForce(new Vector2(0, playerData.jumpForce),ForceMode2D.Impulse);playerAnimator.SetTrigger("Jump");playerData.jumpCount--;}
重置跳跃次数
if ( collision.gameObject.layer == LayerMask.NameToLayer("Terrain")//落回到地面&& !playerData.isOnGround&& contacts.Length > 0&& contacts[0].normal == Vector2.up) // 如果是从上方到达地面{playerData.isOnGround = true;playerData.jumpCount = 2;JumpCancle();}