没有网格的Box对撞机和Physics.Raycast

时间:2012-03-19 10:08:11

标签: c# unity3d

我将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,以及用于触发器检查的脚本

1 个答案:

答案 0 :(得分:2)

OnTriggerEnter(以及其他对撞机事件方法)仅在实际发生碰撞时调用,而不是通过投射光线来调用。要解决您的问题,这取决于您的使用案例。

如果你想在真正的碰撞之前做出反应,你可以将对撞机放大到例如1.5的网格尺寸

如果你需要这两种情况,即对直接碰撞作出反应,而在某些其他情况下需要采取一些行动,你应该拆分你的代码,例如:

if (Physics.Raycast(mousePositionInWorld, transform.forward, 10)) {
   doSomething ();
}

void OnTriggerEnter(Collider other) {
   doSomething ();
}

void doSomething () {
}