Visual Studio OnCollisionEnter2D不工作,尽管尝试了许多不同的事情

1hdlvixo  于 2023-05-29  发布在  其他
关注(0)|答案(1)|浏览(123)

我有一个函数:

public void OnCollisionEnter2D(Collider2D collision)
{
    if (collision.gameObject.name == "ColliderLeft")
    {
        Debug.Log("Left");
        //transform.position(-9.5f, transform.position.y);
    }
}

我的碰撞器,启动和更新功能,仍然不工作。

public Collider2D collider;

void Start()
{
    collider = GetComponent<Collider2D>();
}

void Update()
{
    OnCollisionEnter2D(collider);
}

我的脚本错误是脚本错误:OnCollisionEnter2D此消息参数的类型必须为:Collision2D消息将被忽略。

agxfikkp

agxfikkp1#

这里需要注意几点:对撞机和碰撞不是一回事。Collider 2D代表一个你已经附加到游戏对象上的2D碰撞器(例如一个hitbox)。
Collision 2D是当Collider 2D与另一个Collider 2D接触时发生的事件。
注意区别:对撞机!=碰撞**
当发生碰撞时,Unity会向碰撞中涉及的两个gameObject发送消息OnCollisionEnter 2D。不要尝试在更新中调用它,因为您没有要提供的冲突。Collision不是Collider
变更

public Collider2D collider;

void Start()
{
    collider = GetComponent<Collider2D>(); // this is ok
}

void Update()
{

}

private void OnCollisionEnter2D(Collision2D collision) // changed Collider2D to Collision2D
{
    if (collision.gameObject.name == "ColliderLeft")
    {
        Debug.Log("Left");
        //transform.position(-9.5f, transform.position.y);
    }
}

相关问题