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