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