我使用两条线减慢游戏时间:
Time.timeScale = slowMotionSpeed;
Time.fixedDeltaTime = slowMotionSpeed * 0.02f;
慢动作效果很好,就像它必须一样平滑。
问题是虽然我在关卡上有很多AddForce
实用程序,比如跳跃,蹦床,风等,但它们的计算方法是让玩家需要非常精确的计时才能做到这一点。
我注意到,在慢速运动而不是常规速度使用它之后,无论我尝试多少次,这些蹦床都不会让我足够跳跃(这之前很容易跳转)。
如果我尝试慢动作跳转,但没有调整Time.fixedDeltaTime
,则游戏会滞后,但跳跃成功。
问题是,即使AddForce
被修改,如何解决这个问题以使Time.fixedDeltaTime
正常工作并将玩家抛向相同的距离?
修改
蹦床:float jumpForceAdded;
void OnTriggerStay2D(Collider2D other)
{
if (other.gameObject.CompareTag("Player") && !CharacterController2D.movementDisabled && !CharacterController2D.playerDied)
{
Rigidbody2D otherRB = other.gameObject.GetComponent<Rigidbody2D>();
if (JumpInput.JUMP)
{
otherRB.AddForce(new Vector2(0,jumpForceAdded * 2f));
}
else
{
otherRB.AddForce(new Vector2(0,jumpForceAdded));
}
StartCoroutine(ChangeSpritesBack());
}
}
它使用&#34;双跳&#34;如果我们跳上蹦床,如果我们不这样做,那就是经常跳。
再次修改:我添加了Addforce
版本,我应该在开头添加。我使用了一个弃用的,很抱歉给您带来不便。
顺便说一下,当我使用OnTriggerStay2D
时,我的猜测是力量本身并不相同 - 但是玩家获得该力量时的持续时间是。我不知道在所有情况下,根据时间按比例改变力量是否有效。
答案 0 :(得分:0)
当您修改Time.timeScale
时,您 必须修改Time.fixedDeltaTime
。你的游戏出现&#34;滞后&#34;是因为你的刚体不是插值的。将Rigidbody.interpolation
设为RigidbodyInterpolation.Interpolate
。