首页 > 解决方案 > Addforce 随帧率变化

问题描述

我有一条线正在向玩家施加力。当玩家处于滚动动画状态时,力会在 Update() 中应用。

        if (anim.GetBool("isRolling") == true && anim.GetBool("IsGrounded") == true && canRoll == false)
    {
        rb.AddForce(transform.forward * rollLength, ForceMode.Force);
    }

我的目标是两种设备,一种具有高帧率,另一种具有低帧率。在低帧率(30 fps)的情况下,它运行良好,但在高帧率(100 秒)上,播放器走得太快太快了。我已经读过 Time.deltaTime 会分散力量,这对我没有帮助。我能做些什么来解决这个问题?

标签: unity3d

解决方案


  1. 如上所述:“AddForce”并没有真正增加力量,而是能量,所以你应该使用 Time.deltaTime 缩放它

  2. 在统一进行物理计算时,建议在内部进行FixedUpdate,因为它保证具有恒定的激活率,这使您可以避免某些通常在物理上出现的问题,即使帧率波动很小,也可以正确使用Time.deltaTime


推荐阅读