OnTriggerEnter 未检测到碰撞

Collision not detected by OnTriggerEnter

所以我正在尝试制作一款关于足球的游戏。在这个程序中,我创建了 2 个对象(在层次结构中):Ballgoal_line_1。在这段代码中,我试图检查球是否与球门线相撞,如果确实相撞,我将 return (Lerp) 球到中间点 (0,0.3,0) .但是不知何故,当我将球拖到球与球门线相撞的位置,然后按播放键时,球就停留在那里,没有return到中间点。

public var smooth : float;

private var newPosition : Vector3;

function Awake ()
{
    newPosition = transform.position;
}

function OnTriggerEnter (ball : Collider)
{
    var positionA : Vector3 = new Vector3(0, 0.3, 0);

    newPosition = positionA;

    ball.transform.position = Vector3.Lerp(ball.transform.position, newPosition, smooth * Time.deltaTime);
}

那是因为你使用了OnTriggerEnter()函数。当对撞机 进入 与另一个对撞机发生碰撞时,将调用此函数。将球拖入直线然后按下播放键实际上是在跳过 'Trigger Enter' 事件。涉及到碰撞时,主要有三个事件:TriggerEnter、TriggerStay 和 TriggerExit。

虽然我不确定,但如果您将函数更改为 OnTriggerStay(),您的函数可能会起作用。然而,为了更安全的测试方法,我建议您向球添加一个脚本,这样您就可以用键盘手动移动它并查看 OnTriggerEnter() 功能是否有效,因为通过这样做,您将模拟更真实的情况(球 kicked/moving 朝向线而不是 "suddenly existing" 在线)。

如果您使用的是 2D,则需要将 OnTriggerEnter 函数更改为 OnTriggerEnter2D