嗨,我正在尝试进行2D碰撞,但我无法使其正常工作
我在做 :

if (collider.posX + collider.sizeX >= obstacle.posX && obstacle.posX + obstacle.sizeX >= collider.posX && collider.posY + collider.sizeY >= obstacle.posY)

障碍物无法在y轴上移动,所以这就是为什么我只检查
collider.posY + 50 >= obstacle.posY

碰撞有效,但只有在对撞机的障碍物一半时才开始

最佳答案

关于什么:

if( obstacle.posX >= collider.posX &&
    obstacle.posX <= collider.posX + collider.sizeX &&
    obstacle.posY >= collider.posY &&
    obstacle.posY <= collider.posY + collider.sizeY
  )

该代码应检查障碍点是否与碰撞体矩形相交。
这是更好的解决方案,因为它检测到两个矩形之间的重叠:
if ( obstacle.posX <= collider.posX + collider.sizeX &&
     obstacle.posX + obstacle.sizeX >= collider.posX &&
     obstacle.posY <= collider.posY + collider.sizeY &&
     obstacle.posY + obstacle.sizeY >= collider.posY )

09-12 16:58