unity3d - 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 会分散力量,这对我没有帮助。我能做些什么来解决这个问题?
解决方案
如上所述:“AddForce”并没有真正增加力量,而是能量,所以你应该使用 Time.deltaTime 缩放它
在统一进行物理计算时,建议在内部进行
FixedUpdate
,因为它保证具有恒定的激活率,这使您可以避免某些通常在物理上出现的问题,即使帧率波动很小,也可以正确使用Time.deltaTime
推荐阅读
- reactjs - 用卡片而不是列来反应 Datagrid?
- functional-programming - 如何修复 F# 函数参数中的类型错误
- java - 参数化测试不适用于 GuiceExtension
- javascript - How to split the String based on array elements into array retaining the array the split word in javascript
- javascript - 使用 momentjs 在 DST 期间获取时区缩写
- break - 如何在 InDesign 脚本中打断一行文本?
- pandas - 如何将 GROUPBY 的结果与 pandas 中的原始数据框连接起来?
- python - 在管理面板和站点(Django)中同时授权管理员
- filter - SPARQL - 过滤评论。标签和摘要到英文并保留整数和 uri 值
- excel - VBA搜索边界单元格并提取