在 Unity 2D 中,如何实现不 "physically" 移动刚体的非触发碰撞?
In Unity 2D, how do I achieve Non-trigger collsion that doesn't "physically" move the rigidbodies?
我有一个子弹游戏对象和一个敌人游戏对象。
- 我想要获得碰撞的能力 point/contact,这就是为什么我认为我需要子弹的碰撞器而不是触发碰撞器 - 这样,我想让子弹弹开敌人。有时,子弹需要从矩形物体反弹(这不是问题),但我也希望子弹从椭圆物体反弹(问题)。
- 我不希望子弹“物理上”推动敌人,这就是为什么,直觉上,我应该将子弹的碰撞器设置为触发碰撞器。
当子弹的collider是trigger collider时,我好像没有办法实现弹跳。
但是当对撞机不是触发对撞机时,它会推动敌人的物体。
没有代码错误,但我认为代码与问题无关。
我怀疑这个问题可能与物理碰撞矩阵有关。
编辑
正如 Leoverload 所建议的那样,光线投射似乎是解决问题的方法。我的问题现在变成了另一个问题,所以我将关闭此线程,并打开一个新线程。
感谢@Leoverload 的帮助! :D
命中的位置很简单。你必须有 2 个碰撞器和 2 个刚体然后你可以简单地添加一个
Void OnTriggerEnter2D(Collision Coll) 并在其内部检查标签:if(coll.compareTag("surface")) 并且在内部您可以通过 collision.transform.position 获得位置。
Physics 菜单上的碰撞矩阵只允许移除某些层之间的碰撞,如果你想让敌人不要互相推挤,这很有用!
如果你不想让玩家被推,你可以改变碰撞器触发,并在碰撞后用与之前相同的方法销毁子弹,使用 void OnTriggerEnter2D 和 compareTag。这样它看起来像是碰到了敌人然后爆炸了,但实际上并没有碰到任何东西。如果你想给玩家添加击退,那么你可以根据子弹的方向做一个简单的 AddForce 就可以了!
如果你想避免子弹移动墙壁,你可以将墙壁设置为静态,它应该可以正常工作
我有一个子弹游戏对象和一个敌人游戏对象。
- 我想要获得碰撞的能力 point/contact,这就是为什么我认为我需要子弹的碰撞器而不是触发碰撞器 - 这样,我想让子弹弹开敌人。有时,子弹需要从矩形物体反弹(这不是问题),但我也希望子弹从椭圆物体反弹(问题)。
- 我不希望子弹“物理上”推动敌人,这就是为什么,直觉上,我应该将子弹的碰撞器设置为触发碰撞器。
当子弹的collider是trigger collider时,我好像没有办法实现弹跳。 但是当对撞机不是触发对撞机时,它会推动敌人的物体。
没有代码错误,但我认为代码与问题无关。
我怀疑这个问题可能与物理碰撞矩阵有关。
编辑
正如 Leoverload 所建议的那样,光线投射似乎是解决问题的方法。我的问题现在变成了另一个问题,所以我将关闭此线程,并打开一个新线程。
感谢@Leoverload 的帮助! :D
命中的位置很简单。你必须有 2 个碰撞器和 2 个刚体然后你可以简单地添加一个 Void OnTriggerEnter2D(Collision Coll) 并在其内部检查标签:if(coll.compareTag("surface")) 并且在内部您可以通过 collision.transform.position 获得位置。 Physics 菜单上的碰撞矩阵只允许移除某些层之间的碰撞,如果你想让敌人不要互相推挤,这很有用!
如果你不想让玩家被推,你可以改变碰撞器触发,并在碰撞后用与之前相同的方法销毁子弹,使用 void OnTriggerEnter2D 和 compareTag。这样它看起来像是碰到了敌人然后爆炸了,但实际上并没有碰到任何东西。如果你想给玩家添加击退,那么你可以根据子弹的方向做一个简单的 AddForce 就可以了!
如果你想避免子弹移动墙壁,你可以将墙壁设置为静态,它应该可以正常工作