我有一条对玩家施加力的线。当播放器处于滚动动画状态时,力在Update()中应用。
if (anim.GetBool("isRolling") == true && anim.GetBool("IsGrounded") == true && canRoll == false)
{
rb.AddForce(transform.forward * rollLength, ForceMode.Force);
}我的目标是两个设备,一个与高帧率和一个与低帧率。在低帧率(30fps)的情况下,它工作得很好,但在高帧率( 100s)时,播放器走得太远太快了。我读到过Time.deltaTime会分力,这对我没什么帮助。我能做些什么来解决这个问题?
发布于 2020-05-18 17:56:36
FixedUpdate在物理意义上并不像它增加能量那样增加力量:你应该通过Time.deltaTime来控制数量和频率,这使得单个调用依赖于时间,但你也应该记住FixedUpdate的存在-它的工作方式就像一个经典的更新,但它保证在每次调用之间有恒定的时间(等于Time.fixedDeltaTime)。一般来说,如果您在每个帧中操作物理,您很可能希望使用FixedUpdate而不是更新
但老实说,我会首先考虑addForce是否是一个滚动机械师的好主意:我觉得使用Rigidbody.velocity或Rigidbody.Move()会更好。
发布于 2021-05-18 16:21:39
来扩展它。
FixedUpdate内部进行,因为它保证有恒定的激活率,这使您可以避免某些经常出现的问题,即使帧速率波动很小,也可以正确使用帧速率https://stackoverflow.com/questions/61858172
复制相似问题