计算球碰撞AABB的方向



  • 向量V是通过碰撞检测时计算出的圆心C距离AABB最近位置P的距离,由P-C得到。
    https://bbs.guaik.org/topic/104/碰撞检测算法-圆-aabb


    图中画出了左右方向的碰撞示意,还有上下碰撞没画出来,如果左上角顶点为(0, 0),右下角坐标为800, 600,则当圆在AABB上方的时候V的方向向量为(0,1),因为P点的Y坐标肯定大于圆心Y坐标。同理,当圆在AABB下方的时候方向向量为(0, -1)因为P点的Y坐标小于圆心Y坐标。
    定义方向向量:UP(0, 1) RIGHT(1, 0) DOWN(0, -1) LEFT(-1, 0)
    当球碰撞AABB上边的时候实际计算出的碰撞方向:
    (0, 1) · (0, 1) = 1 // 对应的是UP

    当球碰撞AABB下边的时候实际计算出的碰撞方向:
    (0, -1) · (0, -1) = 1 // 对应的是DOWN

    总结:
    撞击左边:V(1, 0),方向RIGHT
    撞击右边:V(-1, 0),方向LEFT
    撞击上边:V(0, 1),方向UP
    撞击下边:V(0, -1),方向DOWN


    0_1564583835395_WechatIMG161.jpeg


Log in to reply