[英]Unity Steam VR how to reference the currently held object?
在附加到控制器的脚本中,我希望能够引用控制器当时持有的子对象,但是我不确定如何。 知道如何执行此操作,是否需要标记对象或沿这些方向的内容?
至少我曾经做过的一种方法是使用System
事件。
您在控制器中进行了两个事件:
event EventHandler OnPickedUp;
event EventHandler OnLetGo;
如果您设法在捡起物品的范围之内,则触发事件OnPickekUp
public class MyVRController
{
public event EventHandler OnPickedup;
public event EventHandler OnLetGo;
private bool HasObject = false;
...
private void SuccessfullyPickedUp(GameObject pickedUpGO)
{
if(OnPickedUp != null)
{
HasObject = true;
OnPickedUp(pickedUpGO, null);
}
}
...
private void OnLetGo()
{
if(OnLetGo != null)
{
HasObject = false;
OnLetGo(this, null);
}
}
...
}
然后,无论需要关心您捡起或放下东西的事实,都可以这样做:
public class MyGameManager
{
public void Start()
{
// However you reference the controllers, do it here.
myRightVRController.OnPickedUp += SomeFunc1;
myRightVRcontroller.OnLetGo += SomeFunc2;
myLeftVRController.OnPickedUp += SomeFunc3;
myLeftVRController.OnLetGo += SomeFunc4;
// The rest of your initialization...
}
}
如果需要,可以在可以传递的EventArgs
中指定事件来自哪个控制器(当前传递null
)。
希望这可以帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.