c++ - 2D障碍物碰撞

标签 c++ collision-detection collision

嗨,我正在尝试进行 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/

相关文章:

c++ - 什么是 undefined reference /未解析的外部符号错误,我该如何解决?

java - 静止物体与运动物体的碰撞

javascript - 我的 AABB 碰撞检测/解决代码有什么问题?

JAVA:2D 游戏冒险。碰撞检测问题

python - Pygame.spritecollide() 检测 Sprite 之间的碰撞,即使它们没有接触

java - 碰撞检测图形 2D

java - Java 中的吃 bean 碰撞

c++ - 为什么在 Doom 源代码中有#define ID_INLINE 内联定义?

c++ - 查找表是哈希表的一种形式吗?

C++数组交换并找到最小元素