【问题标题】:Collider2D vs Collision2DCollider2D 与 Collision2D
【发布时间】:2015-03-01 23:45:41
【问题描述】:

在 Youtube 上做了一些视频教程后,我意识到这两个类看起来相似且重复。

-Collision2D-

当传入对撞机与该对象的对撞机接触时调用此方法(仅限 2D 物理)

 void OnCollisionEnter2D(Collision2D coll) {
        if (coll.gameObject.tag == "Enemy")
            coll.gameObject.SendMessage("ApplyDamage", 10);

    }

-Collider2D-

当另一个对撞机接触到这个对象时调用这个方法

 void OnTriggerEnter2D(Collider2D other) {
    Destroy (other.gameObject);
}

这两种方法具有相同的目的并且看起来相同。有什么区别?

【问题讨论】:

    标签: unity3d unity3d-2dtools


    【解决方案1】:

    Collision2D 包含有关碰撞的信息,而Collider2D 是碰撞对象的一个​​组件。

    http://docs.unity3d.com/ScriptReference/Collision2D.html http://docs.unity3d.com/ScriptReference/Collider2D.html

    如您所见,目的相似,但不一样。

    【讨论】:

    • 我仍然对 Collision2D 感到困惑。我的意思是我可以在 UI 中看到并轻松创建 Collider2D 对象,但是我在哪里可以创建 Collision2D 对象?对不起我的新手问题。哈哈。
    • @ggDeGreat,您没有创建 Collision2D 对象。这是当您处理 OnCollisionEnter 事件并且事件发生时传递给您的类......它是由统一引擎中的 2d 物理系统创建的。例如,您可以通过它找出碰撞点。
    • 我明白了。还有一件事,这两种方法,即使它通过不同的类,但都可以访问碰撞的所有信息,对吧?不同的是在触发期间调用的一种方法,而另一种则不是。
    • @ggDeGreat,AFAIK Collider2D 无法访问实际发生碰撞的点或相对速度的信息(但您可以自己计算这个).. 这在很大程度上取决于您需要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多