Unity:基本的2D刚体无法检测到碰撞

时间:2019-04-16 13:49:58

标签: unity3d 2d sprite collision

在使用Unity引擎时,我尝试在游戏中添加基本的碰撞检测。我创建了两个简单的对象,它们朝着彼此不同的方向移动(因此它们会发生碰撞)。在OnCollisionEnter2D(Collision2D col)方法中,我放置了一个Debug.Log()来测试碰撞是否有效。

我遵循了来自Unity官方频道的教程,并遵循了所提供的确切步骤。但这仍然行不通!我在Google上阅读过几乎所有存在相同问题的帖子,但仍然找不到任何解决方法

我尝试了什么?

  • 两个对象的Z位置都设置为0。
  • 两个对象都具有RigidBody2D和BoxCollider2D
  • 对象的移动速度不太快,移动速度非常慢(用于测试) (我读过,如果它们移动得如此之快以至于它们在帧之间彼此通过,则不会检测到碰撞)
  • 两个触发器对撞机不能碰撞-一个必须是常规对撞机(适用于此)
  • 这些对象位于同一层上,我检查了2D物理设置,并确保所有层都可以彼此交互。
  • 我所有的对撞机和RigidBodies都是2D变体(这是我在互联网上阅读最多的解决方案,但并未为我解决!)

这是我要碰撞的游戏对象的两个屏幕截图。 (对不起,我无法发布图片,因为我的信誉太低了)

enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

尝试将BodyType更改为Kinemetic

并对Debug.Log()OnCollisionExit2D使用OnCollisionStay2D