在 Unity 2D 中,如何实现不 "physically" 移动刚体的非触发碰撞?

In Unity 2D, how do I achieve Non-trigger collsion that doesn't "physically" move the rigidbodies?

我有一个子弹游戏对象和一个敌人游戏对象。

当子弹的collider是trigger collider时,我好像没有办法实现弹跳。 但是当对撞机不是触发对撞机时,它会推动敌人的物体。

没有代码错误,但我认为代码与问题无关。

我怀疑这个问题可能与物理碰撞矩阵有关。

编辑

正如 Leoverload 所建议的那样,光线投射似乎是解决问题的方法。我的问题现在变成了另一个问题,所以我将关闭此线程,并打开一个新线程。

感谢@Leoverload 的帮助! :D

命中的位置很简单。你必须有 2 个碰撞器和 2 个刚体然后你可以简单地添加一个 Void OnTriggerEnter2D(Collision Coll) 并在其内部检查标签:if(coll.compareTag("surface")) 并且在内部您可以通过 collision.transform.position 获得位置。 Physics 菜单上的碰撞矩阵只允许移除某些层之间的碰撞,如果你想让敌人不要互相推挤,这很有用!

如果你不想让玩家被推,你可以改变碰撞器触发,并在碰撞后用与之前相同的方法销毁子弹,使用 void OnTriggerEnter2D 和 compareTag。这样它看起来像是碰到了敌人然后爆炸了,但实际上并没有碰到任何东西。如果你想给玩家添加击退,那么你可以根据子弹的方向做一个简单的 AddForce 就可以了!

如果你想避免子弹移动墙壁,你可以将墙壁设置为静态,它应该可以正常工作