如图,实现这样的效果 其实非常简单,就两个必要条件
 
 
触发:一定是按下触发
跳跃次数:一定大于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();
   }


















