c# - 在 Update 或 FixedUpdate 中移动带有刚体组件的对象是否重要?
问题描述
最后它工作正常。我只是想知道我是否必须使用 addforce 或其他刚体在 fixedupdate 中移动带有刚体的游戏对象,或者只使用更新也很好?
void Update()
{
switch (state)
{
case TransitionState.MovingTowards:
var v = destinationTransform.position - transform.position;
if (v.magnitude < 0.001f)
{
state = TransitionState.Transferring;
originTransform = destinationTransform;
timer = 0;
return;
}
t += Time.deltaTime;
float s = t / duration;
transform.position = Vector3.Lerp(originPosition,
destinationTransform.position, curve.Evaluate(s));
break;
case TransitionState.Transferring:
timer += Time.deltaTime;
this.transform.position = Vector3.Lerp(originTransform.position, destinationTransform.position, timer);
if (timer >= 1.0f)
{
this.transform.parent = destinationTransform;
transform.localPosition = new Vector3(0, 0, 0);
isChild = true;
state = TransitionState.None;
this.enabled = false;
return;
}
break;
default:
this.enabled = false;
return;
}
}
解决方案
我只是想知道我是否必须使用 addforce 或其他刚体在 fixedupdate 中移动带有刚体的游戏对象,或者只使用更新也很好?
如果您像您说的那样通过刚体组件移动对象(例如,rigidbody.AddForce()),您应该始终使用FixedUpdate。
更新发生在每一帧时间,但 FixedUpdate 发生在每个“固定更新”时间,这可能与默认更新时间不同。您通常会根据游戏需要更改它。如果您需要更多物理处理,您可以创建固定更新的更新率。如果您的游戏不需要大量物理,那么您可以减少更新物理的频率。
推荐阅读
- c# - 连接两个表并对某一列求和
- c++ - 如何比较两个由 C++/C 代码构建的 AST?
- javascript - 选择时的角度自动完成获取所选值的所有对象
- c++ - RegisterHotKey NOREPEAT 解决方法 c++
- python - 使用python的图形工具计算最短路径和距离的有效方法
- php - 如何显示2个变量laravel的结果
- java - 为什么使用 Big JsonObject 获取 StackOverflowError?
- c - C程序将随机字符串写入文件
- php - PHP加密数据需要在ReactNative中解密
- c++ - cv.notify_all() 在关闭期间未在主线程中返回