Gameobject在整个运动中振动
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gameobject在整个运动中振动相关的知识,希望对你有一定的参考价值。
我有一个GameObject,它从文件中获取位置坐标。此GameObject振动而不是平稳地运动。 (好像来回移动。)
这是提供机芯的代码:
int counter = 0;
void Update()
{
var maxDistance = speed_* Time.deltaTime;
var oldPosition = transform.position;
var newPosition = Vector3.MoveTowards(transform.position, positions[counter], maxDistance);
var actualDistance = Vector3.Distance(newPosition, oldPosition);
var distanceRemainder = maxDistance - actualDistance;
if (distanceRemainder > 0.0001)
{
newPosition = Vector3.MoveTowards(newPosition, positions[counter], distanceRemainder);
counter++;
}
transform.localPosition = newPosition;
}
注意:从文件中读取的数据在“位置”数组中(x,y,z坐标)。
当我在变量maxDistance中降低300f值时,振动停止并且运动变得更加流畅。但是,Gameobject的速度也在减慢。如何确保快速平稳的运动?
答案
这是由于您将distanceRemainder用作maxDistanceDelta,我认为这是不正确的,如果要平滑移动,应将其乘以Time.deltaTime
,然后尝试:
newPosition = Vector3.MoveTowards(newPosition, positions[counter], distanceRemainder*Time.deltaTime);
或简单地声明速度变量并执行:
newPosition = Vector3.MoveTowards(newPosition, positions[counter], speed*Time.deltaTime);
以上是关于Gameobject在整个运动中振动的主要内容,如果未能解决你的问题,请参考以下文章
数学建模MATLAB应用实战系列(100)-谈谈小球单摆实验应用案例(附MATLAB代码)
Unity3DUnity 游戏画面帧更新 ( 游戏物体 GameObject 移动 | 借助 Time.deltaTime 进行匀速运动 )