首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Addforce随帧速率变化

Addforce随帧速率变化
EN

Stack Overflow用户
提问于 2020-05-18 04:14:05
回答 2查看 226关注 0票数 0

我有一条对玩家施加力的线。当播放器处于滚动动画状态时,力在Update()中应用。

代码语言:javascript
复制
        if (anim.GetBool("isRolling") == true && anim.GetBool("IsGrounded") == true && canRoll == false)
    {
        rb.AddForce(transform.forward * rollLength, ForceMode.Force);
    }

我的目标是两个设备,一个与高帧率和一个与低帧率。在低帧率(30fps)的情况下,它工作得很好,但在高帧率( 100s)时,播放器走得太远太快了。我读到过Time.deltaTime会分力,这对我没什么帮助。我能做些什么来解决这个问题?

EN

回答 2

Stack Overflow用户

发布于 2020-05-18 17:56:36

FixedUpdate在物理意义上并不像它增加能量那样增加力量:你应该通过Time.deltaTime来控制数量和频率,这使得单个调用依赖于时间,但你也应该记住FixedUpdate的存在-它的工作方式就像一个经典的更新,但它保证在每次调用之间有恒定的时间(等于Time.fixedDeltaTime)。一般来说,如果您在每个帧中操作物理,您很可能希望使用FixedUpdate而不是更新

但老实说,我会首先考虑addForce是否是一个滚动机械师的好主意:我觉得使用Rigidbody.velocity或Rigidbody.Move()会更好。

票数 0
EN

Stack Overflow用户

发布于 2021-05-18 16:21:39

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

来扩展它。

  1. 在做物理计算时,建议在FixedUpdate内部进行,因为它保证有恒定的激活率,这使您可以避免某些经常出现的问题,即使帧速率波动很小,也可以正确使用帧速率
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61858172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档