【问题标题】:OnTriggerEnter not working at Unity3DOnTriggerEnter 在 Unity3D 中不起作用
【发布时间】:2016-03-11 10:16:50
【问题描述】:

我正在尝试检测篮球比赛中的球进入投掷环。我在环上使用以下脚本

public class Anotar : MonoBehaviour {

    private ControlJuego control;

    void Start(){
        GameObject gameControllerObject = GameObject.FindWithTag ("ControlJuego");
        if (gameControllerObject != null)
        {
            control = gameControllerObject.GetComponent <ControlJuego>();
        }
        if (control == null)
        {
            Debug.Log ("Cannot find 'GameController' script");
        }
    }

    void OnTriggerEnter (Collision col)
    {
        control.puntuar (2);
    }

    void OnCollisionEnter (Collision col)
    {
        //control.puntuar (3);
    }
}

环有一个盒子碰撞器设置为触发器来检测 OnTriggerEnter 方法。它还有一个网格碰撞器来检测球何时接触它并抛出 OnCollisionEnter。我的问题是 OnTriggerEnter 不起作用(在内部使用断点并且它不会停止)。实际上 OnCollisionEnter 工作正常。我的球有一个球体对撞机,并且都使用刚体。有什么想法吗?

编辑:我附上我的球和戒指的截图

【问题讨论】:

  • OnTriggerEnter 在 box collider 的 isTrigger 属性设置为 true 时起作用
  • 是的,在环形盒对撞机上设置为true,但不起作用
  • 刚体附上了吗?
  • 是的,在环和球比赛中
  • 可以发一下编辑器的截图吗?

标签: c# unity3d


【解决方案1】:

您应该为篮球添加运动学刚体。静态触发器可以检测到刚体,但它不能检测到移动的对撞机,即使触发器具有刚体。

【讨论】:

  • 感谢@carbine 我需要球移动并使用运动学特性使其保持静止。我需要做这样的事情youtube.com/watch?v=F4TC7H6trLo
  • 因此,您可以尝试将其设置为篮筐,而不是使球具有运动性,看看是否可以解决问题。
  • 该跳的运动学特性为真。我快疯了:S
  • 为什么需要 2 个对撞机? Torus 的网格和盒子?你可以只用一个试试吗?他们有不同的行为,可能会互相干扰?
  • 如果我取消选中网格对撞机,球在接触环时行为不正确。反正我试过删了还是不行
【解决方案2】:
void OnTriggerEnter (Collision col)
{
    control.puntuar (2);
}

这永远不会奏效。 OnTriggerEnter 需要 Collider 而不是 Collision。 试试这个:

void OnTriggerEnter (Collider col)
{
    control.puntuar (2);
}

【讨论】:

  • 非常感谢。这就是问题
【解决方案3】:

我遇到了同样的问题,我试图用箭头射击敌人,但箭头 OnTriggerEnter(Collider collider) 一开始没有被调用,我启用的是在敌人中触发(我正在尝试的身体调用方法)这终于解决了我的问题。

【讨论】:

    猜你喜欢
    • 2014-08-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多