如何利用SAT检测轴P上的碰撞

时间:2016-12-11 14:46:11

标签: collision-detection sfml

我有旋转物体和分离轴定理的问题。 我可以检测轴X和Y上的碰撞但我不能添加其他轴。 尝试编写该代码:

//player vector
float lenght_box_p = odl(box_xy, box.getTransform().transformPoint(box.getPoint(0)));


//line vector
float lenght_line_p = odl(line_xy, line.getTransform().transformPoint(box.getPoint(0)));

// center vector
float lenght_center_p = odl(line_xy, box_xy);

// angle 
float angle = cos((rotations * M_PI) / 180);

//box projection
float projection_box_p = lenght_box_p * angle;

//line projection 
float projection_line_p = lenght_line_p * angle;

//center projection
float projection_center_p = lenght_center_p * angle;

float gap_p1 = lenght_center_p - projection_box_p - projection_line_p;

if (gap_p1 <0)
{
    return true;
}

我使用两个100 x 100的盒子,现在两个盒子从水平轴方向取向59 *。

这就是全部,感谢您的帮助,抱歉我的英语不好......

1 个答案:

答案 0 :(得分:0)

如果你想要一个好的用于碰撞检测的库,你应该使用它,它可以处理多边形:http://www.angusj.com/delphi/clipper.php