【发布时间】:2020-03-10 22:45:32
【问题描述】:
我试图让我的角色在他被停飞时能够跳跃,或者如果他在空中飞行,那么只有在他有额外的跳跃并且经过 x 时间时才能跳跃。 目前我有这个:'
void Jump()
{
jumpTime -= Time.fixedDeltaTime;
if ((jumpRemember > 0) && ((groundRemember > 0) || ((jumps>0) && (jumpTime <= 0))))
{
jumpRemember = 0;
groundRemember = 0;
rb.velocity = new Vector2(rb.velocity.x, jumpForce);
jumps--;
jumpTime = timeSinceLastJump;
}
}
(跳跃记忆和接地记忆是检查我是否按下跳跃按钮或在最后 0.1 秒内接地)
但是当他被搁浅并与屋顶相撞并被送回地面时,即使我使用了“或”运算符,他也不能在时间过去后跳起来。
【问题讨论】:
-
我不明白你的变量
jumpRemember和groundRemember的用途,但我猜你的问题是当玩家点击跳转按钮时你调用Jump()并且它只在你做的这段代码jumpTime -= Time.fixedDeltaTime;。所以基本上jumpTime只会在玩家点击跳跃时减少,这可能不是你想要的。我不依赖于每帧递减值,而是使用时间检查。 -
groundRemember应该是一个布尔值...但是告诉我们变化的地方 -
@rfmodulator 我有
groundRemember -= Time.deltaTime; if (isGrounded == true) { groundRemember = groundRememberTime; }所以它在技术上是一个布尔值 -
@FredrikSchön 我会调查时间检查,谢谢
-
@ToBeFrank 我现在和你在一起......
isGrounded有道理。