我正试着解决一个问题。我在玩虚拟现实游戏。我设置了一个无形的对撞机作为触发开关,从手化身,是在控制器上的其他东西在游戏中。问题是触发器是被识别的,但是设置它是活动的,根本不起作用。我会感谢你的任何建议
我尝试在update方法和on触发器方法中切换对象。在前面的update方法中,它没有从on触发器传递数据。但是,如果我将它放在触发器中,则可以识别bool,但不会将对象设置为活动对象。
public GameObject leftHand;
public GameObject leftHandOnChest;
public bool cprColliderLeft = false;
void Start()
{
leftHandOnChest.SetActive(false);
leftHand.SetActive(true);
}
void Update()
{
}
private void OnTriggerEnter(Collider collider)
{
if (collider.tag == "CPRStart")
{
cprColliderLeft = true;
if(cprColliderLeft == true)
{
leftHandOnChest.SetActive(true);
leftHand.SetActive(false);
}
}
}
private void OnTriggerStay(Collider collider)
{
if (collider.tag == "CPRStart")
{
cprColliderLeft = true;
if (cprColliderLeft == true)
{
leftHandOnChest.SetActive(true);
leftHand.SetActive(false);
}
}
}
private void OnTriggerExit(Collider collider)
{
cprColliderLeft = false;
if(cprColliderLeft == false)
{
leftHandOnChest.SetActive(false);
leftHand.SetActive(true);
}
}我的目标是将一个对象从一个活动对象切换到另一个对象。所以其中一个会从现场消失,另一个会出现。谢谢你的帮助
发布于 2019-08-30 07:07:38
我建议采用以下简化代码:
public GameObject leftHand;
public GameObject leftHandOnChest;
void Start()
{
leftHandOnChest.SetActive(false);
leftHand.SetActive(true);
}
private void OnTriggerEnter(Collider collider)
{
if (collider.compareTag ("CPRStart"))
{
leftHandOnChest.SetActive(true);
leftHand.SetActive(false);
}
}
private void OnTriggerExit(Collider collider)
{
if (collider.compareTag ("CPRStart"))
{
leftHandOnChest.SetActive(false);
leftHand.SetActive(true);
}
}但我想你的问题可能是一些进入/退出的连锁反应。我猜标签"CPRStart“在leftHand上--所以当进入时,就禁用它--这将导致exit被调用。
因此,我建议只禁用渲染器:
public GameObject leftHand;
public GameObject leftHandOnChest;
private MeshRenderer hand_renderer;
void Start()
{
leftHandOnChest.SetActive(false);
leftHand.SetActive(true);
hand_renderer = leftHand.getComponent <MeshRenderer> ();
}
private void OnTriggerEnter(Collider collider)
{
if (collider.compareTag ("CPRStart"))
{
leftHandOnChest.SetActive(true);
hand_renderer.enabled = false;
}
}
private void OnTriggerExit(Collider collider)
{
if (collider.compareTag ("CPRStart"))
{
leftHandOnChest.SetActive(false);
hand_renderer.enabled = true;
}
}https://stackoverflow.com/questions/57708594
复制相似问题