给你一个设置:我正在制作一个零度g的Vive游戏,玩家通过抓住手柄并推动自己移动。
我想要的是让玩家能够通过用双手抓住手柄来自行旋转。想象一下,如果你用双手握住酒吧,你将如何移动零克。
说明: 在左侧,玩家用双手抓住了车把。左臂伸直,右臂弯曲。
在右侧图片中,玩家现在已经扩展了右臂,这使得玩家在酒吧周围旋转。
我想这更容易看到它就好像玩家会移动整个世界,当他们这样做时。
我的问题是:我如何通过Unity-trickery的数学在三维中实现这一点?它需要相对于手来滚动,偏航和定位玩家。
谢谢!
答案 0 :(得分:0)
记录三个向量的平均值。然后在下一帧中,获得与之前平均值的差异。这种差异可以用作欧拉角,以对刚体施加恒定的力(或根据您的目标将物体旋转一定量或其他可能性)。 https://docs.unity3d.com/ScriptReference/Transform.Rotate.html https://docs.unity3d.com/ScriptReference/Rigidbody.AddForce.html
Vector3 previousCenterPoint;
void Update() {
Vector3 newCenterPoint = (leftHand.transform.position + rightHand.transform.position + player.transform.position) / 3f;
if (previousCenterPoint != null)
{
Vector3 someEulerAngles = newCenterPoint - previousCenterPoint;
someRigidBody.AddForce(someEulerAngles, ForceMode.VelocityChange);
}
previousCenterPoint = newCenterPoint;
}