OnCollisionEnter2D 被平台效应器调用,即使我没有与之发生碰撞
OnCollisionEnter2D is being called with platform effector even though I haven't collided with it
我有一个移动平台脚本。我的平台被冻结,除非我与它发生碰撞,然后它开始移动。我有一个平台效应器,所以我可以从它下面跳上它而不会撞到我的头。
然而 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 Collision Enter”会被记录到控制台中。
我如何做到只有在我与平台发生物理碰撞时才调用 OnCollisionEnter2D?
谢谢!
我使用的是最新版本的 Unity 2021,但我很确定过去其他版本也发生过这种情况。
这个回调是sent when an incoming collider makes contact with this object's collider。
我认为“接触”和“触摸”的含义相同,所以这是预期的行为。
only gets called when I physically collide with the platform?
我猜你想检测碰撞,所以你可能还关注碰撞发生时两个物体之间的velocity。
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.GetComponent<Player>()
&& collision.relativeVelocity.magnitude > THRESHOLD)
{
......
}
}
我有一个移动平台脚本。我的平台被冻结,除非我与它发生碰撞,然后它开始移动。我有一个平台效应器,所以我可以从它下面跳上它而不会撞到我的头。
然而 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 Collision Enter”会被记录到控制台中。 我如何做到只有在我与平台发生物理碰撞时才调用 OnCollisionEnter2D?
谢谢! 我使用的是最新版本的 Unity 2021,但我很确定过去其他版本也发生过这种情况。
这个回调是sent when an incoming collider makes contact with this object's collider。
我认为“接触”和“触摸”的含义相同,所以这是预期的行为。
only gets called when I physically collide with the platform?
我猜你想检测碰撞,所以你可能还关注碰撞发生时两个物体之间的velocity。
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.GetComponent<Player>()
&& collision.relativeVelocity.magnitude > THRESHOLD)
{
......
}
}