【发布时间】:2021-05-20 02:36:28
【问题描述】:
假设我有两个精灵。这些精灵不会有任何 BoxCollider2D 或 RigidBody2D。
如何使用第一个精灵内部的脚本来检测一个精灵是否正在接触另一个精灵。
例如,我有一个玩家和一面旗帜。我希望玩家触摸旗帜时会发生一些事情
很抱歉,如果这写得不好或信息不足,如果您需要更多信息,请留下评论,我会回复。
【问题讨论】:
标签: c# .net unity3d collision-detection
假设我有两个精灵。这些精灵不会有任何 BoxCollider2D 或 RigidBody2D。
如何使用第一个精灵内部的脚本来检测一个精灵是否正在接触另一个精灵。
例如,我有一个玩家和一面旗帜。我希望玩家触摸旗帜时会发生一些事情
很抱歉,如果这写得不好或信息不足,如果您需要更多信息,请留下评论,我会回复。
【问题讨论】:
标签: c# .net unity3d collision-detection
你不想因为碰撞而产生物理排斥的对撞机吗?如果您只想检测两个对象是否相互进入,Triggers 可能就是您要查找的内容。您需要在两个对象上都有一个对撞机,但可以将它们标记为isTrigger。要确切了解您需要什么才能让OnTriggerEnter2D 启动,请查看collision action matrix。
如果您真的不想与碰撞器有任何关系,您可以自己为这两个对象实现基本的碰撞检测。对于两个简单的框,可以使用AABB碰撞检测,就是取两个框的角,判断角是否重叠。
if (obj1Pos.x < obj2Pos.x + obj2.width &&
obj1Pos.x + obj1.width > obj2Pos.x &&
obj1Pos.y < obj2Pos.y + obj2.height &&
obj1Pos.y + obj1.height > obj2Pos.y) {
// collision detected!
}
如果您想了解更多关于自我实现以检测 2D 碰撞,this is a good read。随着更复杂的几何体,碰撞变得更高级,但我相信你只想使用触发器。如果您对触发器是什么、它们的作用方式等有更多疑问。我可以回答它们,但我不确定您想如何解决问题。
【讨论】: