我将Raycast投射到场景中只有一个现有的Box对撞机
if (Physics.Raycast(mousePositionInWorld, transform.forward, 10))
{
Debug.Log("Ray hit something");
}
我收到消息 Ray点击了某些内容
但是我永远不会在盒子对撞机上触发
void OnTriggerEnter(Collider other) {
Debug.Log("Menu hit");
}
目标对象是仅使用Box对撞机的gameObject,以及用于触发器检查的脚本
答案 0 :(得分:2)
OnTriggerEnter(以及其他对撞机事件方法)仅在实际发生碰撞时调用,而不是通过投射光线来调用。要解决您的问题,这取决于您的使用案例。
如果你想在真正的碰撞之前做出反应,你可以将对撞机放大到例如1.5的网格尺寸
如果你需要这两种情况,即对直接碰撞作出反应,而在某些其他情况下需要采取一些行动,你应该拆分你的代码,例如:
if (Physics.Raycast(mousePositionInWorld, transform.forward, 10)) {
doSomething ();
}
void OnTriggerEnter(Collider other) {
doSomething ();
}
void doSomething () {
}