微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决使用相对 VR 控制器旋转应用游戏对象旋转?

我在 Unity 中有一个游戏对象,我希望能够使用我的 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;
     }
 {

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。