没有网格的盒形碰撞器以及Physics.Raycast

3

我在场景中只对一个存在的盒子碰撞器进行光线投射

if (Physics.Raycast(mousePositionInWorld, transform.forward, 10))
{
   Debug.Log("Ray hit something");
}

我收到了消息Ray击中了某物

但是我的盒子碰撞器从未触发

void OnTriggerEnter(Collider other) {
        Debug.Log("Menu hit");
    }

目标对象只有Box Collider和用于触发检测的脚本,即gameObject。


不确定我是否理解正确:这两个对象是否实际上发生了碰撞?还是您期望射线投射执行OnTriggerEnter? - Kay
@kay 我想进行光线投射,如果光线击中了盒子,我希望在碰撞器对象的脚本中对其做出反应。 - David Horák
1个回答

2

OnTriggerEnter(和其他碰撞器事件方法)只有在实际发生碰撞时才会被调用,而不是通过投射光线。要解决您的问题,取决于您的使用情况。

如果您想在真正的碰撞之前做出反应,可以将碰撞器放大到网格大小的1.5倍。

如果您需要两种情况,即对直接碰撞做出反应,并且在某些其他情况下需要在执行一些操作之前,请将代码拆分,例如:

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

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

void doSomething () {
}

谢谢,我没有意识到射线投射无法在碰撞盒或其他碰撞类型上启动触发器... - David Horák

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接