【问题标题】:Unity: Basic 2D rigidbody doesn't detect collisionsUnity:基本 2D 刚体不检测碰撞
【发布时间】:2019-04-16 13:49:58
【问题描述】:

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

我按照 Unity 官方频道的教程进行操作,并按照提供的确切步骤进行操作。但它仍然不起作用!我几乎阅读了 Google 上所有遇到相同问题的帖子,但仍然没有找到任何解决方案

我尝试了什么?

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

这是我想要碰撞的游戏对象的两个屏幕截图。 (抱歉不能发图片,因为我的声望太低了)

【问题讨论】:

    标签: unity3d 2d sprite collision


    【解决方案1】:

    尝试将BodyType 更改为Kinemetic

    并将Debug.Log() 用于OnCollisionExit2D 以及OnCollisionStay2D

    【讨论】:

    • BodyType Kinemetic 做到了!感谢您的快速答复!
    • 请在我们的代码中包含OnCollisionExit2DOnCollisionStay2DDebug 并告诉我
    • Kinemetic 完成了这项工作。谢谢!
    • 一件事,如果游戏对象是基于地面的(我建议叫什么)并且你想检查它们是否在地面上,它们使用所有三种方法,它会给你最好的结果
    • 感谢您的信息,我会看看它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多