如何在Unity3D中基于角度速度旋转四元数?

如何在Unity3D中基于角度速度旋转四元数?,unity3d,Unity3d,我正在尝试做客户端预测轮换。我想这和我做这个职位的方式很相似。但我似乎找不到旋转四元数的方法 //这些是通过网络同步的 私人矢量3位置; 专用矢量3速度; 私有四元数旋转; 私人矢量3角速度; //职位 最佳猜测位置=最佳猜测位置+(速度*时间.延迟时间); transform.position=Vector3.Lerp(transform.position、bestGuessPosition、Time.deltaTime*latencySmoothingFactor); //旋转(不工作) b

我正在尝试做客户端预测轮换。我想这和我做这个职位的方式很相似。但我似乎找不到旋转四元数的方法

//这些是通过网络同步的
私人矢量3位置;
专用矢量3速度;
私有四元数旋转;
私人矢量3角速度;
//职位
最佳猜测位置=最佳猜测位置+(速度*时间.延迟时间);
transform.position=Vector3.Lerp(transform.position、bestGuessPosition、Time.deltaTime*latencySmoothingFactor);
//旋转(不工作)
bestGuessRotation=bestGuessRotation+(角度速度*时间.增量时间);
transform.rotation=Quaternion.Lerp(transform.rotation、bestGuessRotation、Time.deltaTime*latencySmoothingFactor);

如何旋转我的
最佳猜测旋转
?似乎没有一个
。像在
变换上那样旋转

在Unity中,两个
四元数
使用“多重作用”(顺序很重要!)

您可以使用以下命令将
Vector3
旋转
角度速度
从Euler空间转换为
四元数

bestGuessRotation*=四元数.Euler(角速度*时间.deltaTime);

顺便说一句,这个职位也可以写为

bestGuessPosition+=velocity*Time.deltaTime;

仅凭猜测您在
Update
中使用
Lerp
可能不是最佳选择,这取决于您对此轮换的确切期望

例如,如果在
Update
中使用
Lerp
作为简单的平滑算法,则应删除
Time.deltaTime
,因为插值
因子是一个百分比值,在这种情况下应保持不变