不带网格的长方体碰撞器和Physics.Raycast

本文关键字:Physics Raycast 碰撞 长方体 网格 | 更新日期: 2023-09-27 18:28:10

我将Raycast投射到场景中的一个现有Box对撞机

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

我收到消息雷击中了一些东西

但我从来没有触发盒子对撞机

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

目标对象是只有Box碰撞器的gameObject,以及用于触发检查的脚本

不带网格的长方体碰撞器和Physics.Raycast

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

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

如果你需要这两种情况,即对直接冲突做出反应,并且在其他一些情况下需要之前采取一些行动,你应该拆分你的代码,例如:

if (Physics.Raycast(mousePositionInWorld, transform.forward, 10)) {
   doSomething ();
}
void OnTriggerEnter(Collider other) {
   doSomething ();
}
void doSomething () {
}