unity-game-engine - 忽略特定情况下的碰撞,同时仍将其用作触发器

标签 unity-game-engine 2d collision

我正在制作 2D 平台游戏类型的游戏。在这个平台游戏中,既有玩家,也有“敌人”。出现问题的原因是:我需要敌人和玩家都与地面碰撞,这样他们就不会掉下来。我需要检测玩家何时与敌人发生碰撞,以便记录伤害。我需要玩家能够穿过敌人。脚上的碰撞器不是一个选择,因为玩家可能会与之交互。处理这种特定碰撞检测的最佳方法是什么?

最佳答案

您可以使用Layer Collision Matrix (编辑->项目设置->Physics2D)准确定义layers可以与其他层发生碰撞。

所以我会简单地在播放器上使用两个碰撞器:

  • 其中一个不是触发器,因此可能会与地面发生碰撞。将其放在与 ground 层发生碰撞的 playerGround 层上。
  • 另一个触发器,可以与敌人层发生碰撞。命名它例如playerEnemy 或其他东西。

由于每个游戏对象只能有一层,因此您的碰撞器必须位于不同的对象上,例如喜欢

player (Rigidbody2D)
|--GroundCollider(layer: playerGround)
|--EnemyCollider(layer:playerEnemy, isTrigger)

enemy 层可以与地面playerEnemy 发生碰撞。

这样双方就可以在地面上行走了。玩家可以穿过敌人,但您可以使用 OnTriggerEnter 来检测与敌人的碰撞。

关于unity-game-engine - 忽略特定情况下的碰撞,同时仍将其用作触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59451200/

相关文章:

java - 如何在android上运行unity时共享内存?

c# - 移动纸板

css - 合并 Div 和图像

objective-c - 适用于 iOS 的沙子物理学

c# - 统一,C# |如何在方法之间设置等待时间?

android - NDK 安装在 Unity Hub 中,但 Unity 无法访问它

c++ - 在 C++ 中声明和删除此版本的二维数组

algorithm - 距离图的高效计算

Java Arrays.fill() 负数

python - matplotlib - 避免绘图文本与网格线、边框和其他文本发生冲突