如何解决C# Vector3 Lerp 每秒
我在一个项目中工作,我必须通过服务器数据包大约每秒发送一个信息来移动一个对象。该信息向我发送了对象必须移动的新位置,我正在使用 Vector3.Lerp 来执行该移动。我看到的问题如下:
当我只读取发送的 1 个数据包时,它移动得很轻,还可以,但是当我每秒读取大量接收到的数据包时,该对象什么也不做,一段时间后,它急剧移动。我不知道为什么会这样,也许是因为每秒接收一个新位置会使 Lerp“崩溃”。我不知道。这是我的代码:
public void Update()
{
if (DataFromGTAPackets.Packet2.exerciseStatus == "R")
{
if (DataFromGTAPackets.Packet8.lastUpdatingTime == 0) // Avoid t go to infinity
DataFromGTAPackets.Packet8.lastUpdatingTime = 1;
float timeToReachTarget = DataFromGTAPackets.Packet8.actualUpdatingTime / 1000 - DataFromGTAPackets.Packet8.lastUpdatingTime / 1000;
t += Time.deltaTime / timeToReachTarget;
foreach (int airplaneID in ReadFileData.RFData.mobilesInfo.Keys)
{
if (Convert.ToInt32(this.gameObject.name) == airplaneID)
{
transform.position = Vector3.Lerp(previousPos,nextPos,t);
transform.rotation = Quaternion.Lerp(previousRot,nextRot,t);
}
}
}
}
时间由服务器消息给出(大约每 1 秒一次),所以我使用这些变量(actualUpdatingTime 和 lastUpdatingTime)进行我的 Vector3.Lerp 时间计算。 变量previousPos 和previousRot 是对象在接收服务器消息时的transform.position/transform.rotation。 nextPos 和 nextRot 是服务器消息给出的变量,表示对象必须达到的新位置和旋转。
在此先感谢您!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。