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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity3d OncollisionEnter2d检测不到碰撞,而且勾了isTrigger也无法穿过相关的知识,希望对你有一定的参考价值。

public void OnCollisionEnter2D(Collision2D collision)

if (collision.gameObject.tag == "NPC")

print(1);
Debug.Log("1");

//if(collision.gameObject.CompareTag("NPC"))
//
// print(1);
//
print(2);
Debug.Log("1");

当碰撞到的时候连2都不会打印,也就是说根本没有检测到碰撞,移动的人没有添加刚体,碰撞检测,被撞的物体有一个box collider2d

参考技术A 两者都要加collider本回答被提问者采纳

OncollisionEnter2D 不工作,但 OnTriggerEnter2D 工作正常

【中文标题】OncollisionEnter2D 不工作,但 OnTriggerEnter2D 工作正常【英文标题】:OncollisionEnter2D not working but OnTriggerEnter2D works fine 【发布时间】:2014-07-13 08:49:15 【问题描述】:

我是 Unity 的新手,在这里我想解雇 OncollisionEnter2D

我已关闭 Is Kinematic,用于对象及其调用 beeCollision.js 脚本

如果我在 Unity-editor 中玩游戏,我可以看到 - 它发生碰撞并强制碰撞对象旋转/移动。所以它肯定会发生冲突,但不知何故 OncollisionEnter2D 没有被调用。

但是,如果我打开 Is TriggerOnTriggerEnter2D 就可以正常工作。

这里是 beeCollision.js 脚本-

function OncollisionEnter2D (other: Collision2D) 
    // NOT GETTING CALLED
    Debug.Log("collided 1");


function OnTriggerEnter2D(other : Collider2D) 
    // Works well, if Is Trigger is turned on
    Debug.Log("collided 2");

&这里是 Unity 编辑器的 2 个屏幕截图-

    播放器设置:

    障碍物预制件的设置:

【问题讨论】:

【参考方案1】:

检查这个网址, http://docs.unity3d.com/ScriptReference/30_search.html?q=OnCollisionEnter2D

将“OncollisionEnter2D”更改为“OnCollisionEnter2D”,它会为您工作。

【讨论】:

【参考方案2】:

还要确保它是 OnCollisionEnter2D b/c 我为此苦苦挣扎了将近两个小时,我发现我在 Collision 中错过了一个 i。

【讨论】:

以上是关于unity3d OncollisionEnter2d检测不到碰撞,而且勾了isTrigger也无法穿过的主要内容,如果未能解决你的问题,请参考以下文章

OnCollisionEnter2D 发送信息失败

OncollisionEnter2D 不工作,但 OnTriggerEnter2D 工作正常

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

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

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

Unity:尝试调用事件时出错