嗨,我正在尝试进行 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 )
关于c++ - 2D障碍物碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45886211/