OnTriggerEnter 未检测到碰撞
Collision not detected by OnTriggerEnter
所以我正在尝试制作一款关于足球的游戏。在这个程序中,我创建了 2 个对象(在层次结构中):Ball
和 goal_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
。
所以我正在尝试制作一款关于足球的游戏。在这个程序中,我创建了 2 个对象(在层次结构中):Ball
和 goal_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
。