Unity3d 使用相对VR控制器旋转应用游戏对象旋转?

Unity3d 使用相对VR控制器旋转应用游戏对象旋转?,unity3d,rotation,quaternions,euler-angles,Unity3d,Rotation,Quaternions,Euler Angles,我有一个统一的游戏对象,我想能够使用我的VR控制器旋转。我可以通过以下方式实现这一点 bool triggerClicked = false; Transform rightHand = Player.instance.rightHand.transform; void Update () { if (triggerClicked) { transform.eulerAngles = rightHand.eulerAngles; } {

我有一个统一的游戏对象,我想能够使用我的VR控制器旋转。我可以通过以下方式实现这一点

bool triggerClicked = false;
Transform rightHand = Player.instance.rightHand.transform;
 
void Update () {
    if (triggerClicked) {
         transform.eulerAngles = rightHand.eulerAngles;
    }           
{

…但问题是,当我按下触发器时,我要旋转的对象最初会捕捉到控制器的当前旋转,然后按预期工作。我需要它相对于对象的初始旋转移动。正确的方法是什么?

解决了这个问题。您需要在首次单击触发器时捕获一些初始四元数,然后计算相对差异并应用它们。这将防止初始捕捉到旋转问题

  private bool triggerClicked = false;
  private Transform rightHand = Player.instance.rightHand.transform;

  private Quaternion initialObjectRotation;
  private Quaternion initialControllerRotation;

  private bool set = false;

 void Update () {
     if (triggerClicked) {

         if(set == false)
            {
                initialObjectRotation= transform.rotation;
                initialControllerRotation = rightHand.rotation;
                set = true;
            }

            Quaternion controllerAngularDifference = initialControllerRotation * Quaternion.Inverse(rightHand.rotation);
            transform.rotation = controllerAngularDifference * initialObjectRotation;
     }         
     else
     {
         set = false;
     }
 {