【问题标题】:Unity 2D collisions not being detected未检测到 Unity 2D 碰撞
【发布时间】:2017-04-03 14:13:28
【问题描述】:

我一直在关注 Unity 2D rougelike 教程。检查器在运行时不返回控制台错误。

玩家在网格上移动并且应该与物体发生碰撞,一些应该在移动它们时触发,而另一些应该阻止移动,触发时激活的对象按预期工作。玩家有一个 Rigidbody 2D 和 Box Collider 2D 并设置为运动学。不能按预期工作的对象是墙壁,外墙应该完全阻止移动,内墙应该是可破坏的,并且敌人不能伤害或伤害玩家。墙壁都有一个 Box Collider 2D。敌人也有一个 Rigidbody 2D 并设置为运动学Game

【问题讨论】:

  • 那么你的问题是墙壁不会挡住玩家吗?
  • @CNuts 是正确的

标签: c# unity3d


【解决方案1】:

墙壁不会挡住你的播放器是正常的。您已将 isKinematic 设置为 true。那是什么

控制物理是否影响刚体。

因此,当您将其设置为 true 时,物理不再影响您的玩家,并且他不会与任何东西发生碰撞。

来自Unity documentation

如果启用 isKinematic,力、碰撞或关节将不再影响刚体。通过更改 transform.position,刚体将完全受动画或脚本控制。

如果您希望您的播放器能够与不同的对象发生碰撞,您应该将 isKinematic 设置为 false。

【讨论】:

  • 嗨@CNuts 我将玩家的 Is Kinematic 设置为 false,但现在出现了一个新问题。尽管有空闲空间,但玩家只会移动一个位置,然后就无法进一步移动。能够移动一次空间,我可以看到外墙现在表现正常。在第一次移动之后进行的任何移动都算作移动 a 减少玩家的生命值,因为每次移动的生命值减少 1,但玩家保持在相同的位置。
  • @FarhadKhan 听起来好像有一个物体有一个碰撞器挡住了玩家的路径。
  • 如果我将玩家移动到右侧或上方的空白区域,玩家将无法返回到玩家移动的起始位置。
  • @FarhadKhan 很难找到原因,因为我没有太多信息,但我能想到的唯一原因是有什么东西挡住了他的去路。也许它会在您移动后出现,请在运行游戏时尝试检查那些空白区域中有什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-12
  • 1970-01-01
  • 2022-11-04
  • 1970-01-01
  • 1970-01-01
  • 2020-04-15
  • 1970-01-01
相关资源
最近更新 更多