我有一个移动平台脚本。我的平台被冻结了,除非我和它相撞,然后它开始移动。我有一个平台执行器,所以我可以跳下它,而不是击中我的头在它。然而,OnCollisionEnter2D正在被调用,即使我在它下面,并且没有与单向碰撞发生物理冲突。就好像是个扳机。
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.GetComponent<Player>())
{
Debug.Log("On Collision Enter");
//CameraFollow.instance.useFixedDeltaTime = false;
Player = collision.gameObject;
PlayerScript = Player.GetComponent<Player>();
amountOfTimesPlayerCollided++;
}即使我的头只是接触对撞机区域(没有跳转到平台上),这个方法也会被调用,并且"On冲突输入“被登录到控制台中。如何使OnCollisionEnter2D只在与平台发生物理冲突时才被调用?
谢谢!我正在使用最新版本的Unitation2021,但这在我身上已经发生过,在过去的其他版本中,我非常肯定。
发布于 2021-12-06 09:28:30
这个回调是当传入对撞机与该物体的对撞机发生接触时发送。
我认为“接触”和“触摸”有着相同的含义,所以这是一种预期的行为。
只有当我和平台发生物理碰撞时才会被呼叫?
我想您希望检测到影响,所以当碰撞发生时,您可能也会注意两个对象之间的速度。
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.GetComponent<Player>()
&& collision.relativeVelocity.magnitude > THRESHOLD)
{
......
}
}https://stackoverflow.com/questions/70242696
复制相似问题