关于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();
调试,问题解决。