如何判断一个精灵是否正在接触 Unity2D 中的另一个精灵

How to tell if a sprite is touching another sprite in Unity2D

假设我有两个精灵。这些精灵不会有任何 BoxCollider2Ds 或 RigidBody2Ds.

我如何使用第一个精灵中的脚本检测一个精灵是否正在接触另一个精灵。

例如我有一个玩家和一面旗帜。我希望玩家触摸旗帜时发生一些事情

抱歉,如果这篇文章写得不好或信息不够,如果您需要更多信息,请发表评论,我会回复。

因为碰撞产生的物理排斥力,你不想对撞机吗?如果您只想检测两个物体是否相互进入,Triggers might be what you are looking for. You will need to have a collider on both objects, but can mark them isTrigger. To see exactly what you need in order for the OnTriggerEnter2D to go off, view the 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!
}

如果您想了解更多关于检测二维碰撞的自我实现,this is a good read。对于更复杂的几何体,碰撞会变得更高级,但我相信您只想使用触发器。如果您对触发器是什么、它们如何运作等有更多疑问。我可以回答它们,但我不确定您希望如何解决您的问题。