欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于Unity VR中grabbed的物体改变位置后仍被controller控制的问题

程序员文章站 2022-06-11 09:13:04
...

问题

项目中遇到的,使用VRTK抓取一个gameobject,当在抓取中满足某种坐标条件就利用transform.position = vector进行改变grabbed物体的位置。发现在其后几帧内该物体仍然被controller控制,以至于移动了一段距离。

因此,我思考到可能是controller的grab操作滞留的问题。于是我去翻了VRTK_InteractableObject的脚本。

解决

猜我发现了什么!

/// <summary>
/// The ForceStopInteracting method forces the Interactable Object to no longer be interacted with and will cause an interacting object to drop the Interactable Object and stop touching it.
/// </summary>
        public virtual void ForceStopInteracting()
        {
            if (gameObject.activeInHierarchy)
            {
                forceDisabled = false;
                StartCoroutine(ForceStopInteractingAtEndOfFrame());
            }

            if (!gameObject.activeInHierarchy && forceDisabled)
            {
                ForceStopAllInteractions();
                forceDisabled = false;
            }
        }

由summary来看大概就是立刻停止交互,这不就是想要的功能。于是直接获取该脚本里的该函数:

GetComponent<VRTK_InteractableObject>().ForceStopInteracting();

调试,问题解决。