【问题标题】:Box collider without mesh, and Physics.Raycast没有网格的盒子对撞机和 Physics.Raycast
【发布时间】:2012-03-19 10:08:11
【问题描述】:

我将 Raycast 投射到场景中仅一个现有的 Box 碰撞器

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

我收到消息雷撞到了什么东西

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

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

目标对象是仅带有 Box collider 的 gameObject,以及用于触发检查的脚本

【问题讨论】:

  • 不确定我是否理解正确:这两个物体是否真的发生了碰撞?还是您希望光线投射执行 OnTriggerEnter?
  • @kay 我想要投射光线投射,如果光线击中盒子,那么我想在对撞机对象的脚本中对其做出反应

标签: c# unity3d


【解决方案1】:

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

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

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

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

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

void doSomething () {
}

【讨论】:

  • 谢谢,我没有意识到,光线投射无法在碰撞盒或其他碰撞类型上触发...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-09
  • 2016-11-28
  • 1970-01-01
  • 2022-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多