C# 如何实现类似Alto Adventure的2D跳跃?

C# 如何实现类似Alto Adventure的2D跳跃?,c#,unity3d,game-physics,C#,Unity3d,Game Physics,我已经通过改变变换和应用速度实现了,但没有得到平滑度 // In Update if (Input.GetKeyDown("space")) { isJumping = true; StartCoroutine(Jump()); isJumping = false; } IEnumerator Jump() { if (IsGrounded()) { isJumping = true;

我已经通过改变变换和应用速度实现了,但没有得到平滑度

 // In Update 

 if (Input.GetKeyDown("space"))
    {
        isJumping = true;
        StartCoroutine(Jump()); 
        isJumping = false;
    }

IEnumerator Jump() 
{
    if (IsGrounded())
    {
        isJumping = true;
        player.gravityScale = gravityDuringJump;
        player.velocity = new Vector2(jumpSpeedInX, jumpSpeedInY);        
    }

    yield return new WaitUntil(() => IsGrounded() == false);
    isJumping = false;
}

这是一个有点难说的小信息。不过我会帮你一把;我实现了一个简单的Alto处理冒险的克隆(可能是Java,但您应该能够理解我所做的)。你可以看到它在运行&看看这里的源代码:我认为使它工作的主要关键是以牛顿的方式跟踪速度。(使用ineratia,集成速度的所有变化,使用速度更新位置)几个查询->1)为什么在启动协同程序后立即设置
isJumping=false
?我认为这可能会产生意想不到的后果。2) 您是否尝试过在没有协同程序的情况下实现它。谢谢@TimothyGroote