【问题标题】:Apply game object rotation using relative VR controller rotation?使用相对 VR 控制器旋转应用游戏对象旋转?
【发布时间】:2021-01-18 16:09:43
【问题描述】:

我在 Unity 中有一个游戏对象,我希望能够使用我的 VR 控制器旋转它。我可以通过执行以下操作来实现这一点...

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

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

【问题讨论】:

    标签: unity3d rotation quaternions euler-angles


    【解决方案1】:

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

      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;
         }
     {
    

    【讨论】:

      猜你喜欢
      • 2018-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-29
      相关资源
      最近更新 更多