OnCollisionEnter2D 发送信息失败

Posted

技术标签:

【中文标题】OnCollisionEnter2D 发送信息失败【英文标题】:OnCollisionEnter2D fails to send information 【发布时间】:2015-07-26 23:40:07 【问题描述】:

我正在测试 OnCollisonEnter2D,但它似乎不适合我。 我的两个游戏对象上都有 box collider 2d 和rigidbody2d,但它再次无法向控制台发送消息。

using UnityEngine;
using System.Collections;

public class CollisionAndResetSystem : MonoBehaviour 
void OnCollisionEnter2D(Collision2D coll) 
    if (coll.gameObject.tag == "Cube")
        print ("hit");



我从 Scripting API 中汲取了这一点,但它不想工作。

【问题讨论】:

我只是直接拼错了碰撞... 【参考方案1】:

脚本没有问题。问题必须在您的“boxcollider2d”组件中。请检查“boxcollider2d”的大小,在 x 和 y 以及两个游戏对象中都将其更改为 100。如果您能看到“boxcollider2d”小工具,请检查场景视图。您必须使“boxcollider2d”与您的游戏对象一样大,然后只有 OnCollisionEnter2D 才能工作。

【讨论】:

【参考方案2】:

如果你不需要你的对象受到物理的影响 然后设置isKinematic = falseGravity Scale = 0 并记住将OnCollisionEnter2D 脚本附加到gameObject

【讨论】:

【参考方案3】:

几件事:

void OnCollisionEnter2D(Collision2D coll) 
    if (coll.gameObject.tag == "Cube")
        print ("hit");

    确保与正确的标签进行比较(记住区分大小写)。 确保正在比较的游戏对象已链接此标签。可能是你定义了标签,但没有带有这个标签的游戏​​对象。 检查碰撞器组件的大小,它应该足以接收触摸事件。

希望对你有帮助!

【讨论】:

【参考方案4】:

最重要的是检查您的脚本附加在哪个游戏对象上,交叉检查您的脚本是否附加到您尝试与之发生冲突的游戏对象上。并使用 Debug.log() 代替 Print(),希望有所帮助。

【讨论】:

以上是关于OnCollisionEnter2D 发送信息失败的主要内容,如果未能解决你的问题,请参考以下文章

如何在 OnCollisionEnter2D() 中找到碰撞游戏对象的索引

我将如何允许我在运行时使用 OnCollisionEnter2D 更改对象的标签

Unity 在没有 IsTrigger 的情况下使用 OnCollisionEnter2D 检测碰撞

unity3d OncollisionEnter2d检测不到碰撞,而且勾了isTrigger也无法穿过

发送soap信息失败是啥意思

邮件发送失败的原因是啥?为何总是发不出去呢?