Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 统一性:基本二维刚体不';无法检测碰撞_Unity3d_2d_Sprite_Collision - Fatal编程技术网

Unity3d 统一性:基本二维刚体不';无法检测碰撞

Unity3d 统一性:基本二维刚体不';无法检测碰撞,unity3d,2d,sprite,collision,Unity3d,2d,Sprite,Collision,在玩Unity引擎时,我尝试在游戏中添加一个基本的碰撞检测。我已经创建了两个简单的对象,它们都朝着不同的方向移动,相互靠近(所以它们会碰撞)。在OnCollisionInter2D(Collision2D col)方法中,我放置了一个Debug.Log()来测试冲突是否有效 我遵循官方统一频道的教程,并按照提供的确切步骤进行操作。但它仍然不起作用!我读了谷歌上几乎每一篇文章都有同样的问题,但仍然没有找到任何解决办法 我试了什么 两个对象的Z位置都设置为0 这两个对象都有一个RigidBody2

在玩Unity引擎时,我尝试在游戏中添加一个基本的碰撞检测。我已经创建了两个简单的对象,它们都朝着不同的方向移动,相互靠近(所以它们会碰撞)。在OnCollisionInter2D(Collision2D col)方法中,我放置了一个Debug.Log()来测试冲突是否有效

我遵循官方统一频道的教程,并按照提供的确切步骤进行操作。但它仍然不起作用!我读了谷歌上几乎每一篇文章都有同样的问题,但仍然没有找到任何解决办法

我试了什么

  • 两个对象的Z位置都设置为0
  • 这两个对象都有一个RigidBody2D和一个BoxCollizedR2D
  • 对象移动不太快,移动非常慢(用于测试) (我读到过,如果它们移动得太快,以至于在帧之间相互穿过,则不会检测到碰撞)
  • 两个触发碰撞器不能碰撞-一个必须是常规碰撞器(应用于此)
  • 对象在同一层上,我检查了2D物理设置,并确保所有层都可以相互交互
  • 我所有的碰撞器和刚体都是2D变体(这是我在互联网上读得最多的解决方案,但没有为我修复!)
下面是我想要碰撞的两个游戏对象的截图。(抱歉,我不能发布图片,因为我的声誉太低)


尝试将
体型
更改为
Kinemetic


并使用
Debug.Log()
用于
OnCollisionExit2D
以及
OnCollisionStay2D
尝试将
BodyType
更改为
Kinemetic


使用
Debug.Log()
进行
OnCollisionExit2D
以及
OnCollisionStay2D

BodyType Kinemetic完成了这项工作!谢谢你的快速回答!请将
OnCollisionExit2D
OnCollisionStay2D
包含在我们的代码和
Debug
中,并让我知道Kinemetic完成了这项工作。非常感谢。有一件事,如果游戏对象是基于地面的(我知道怎么称呼它们),你想检查它们是否在地面上,它们会使用这三种方法,这会给你最好的结果谢谢你的信息,我会看一看。BodyType Kinemetic做到了!谢谢你的快速回答!请将
OnCollisionExit2D
OnCollisionStay2D
包含在我们的代码和
Debug
中,并让我知道Kinemetic完成了这项工作。非常感谢。有一件事,如果游戏对象是基于地面的(我知道怎么称呼它们),你想检查它们是否在地面上,它们会使用这三种方法,这会给你最好的结果。谢谢你的信息,我会看一看。