如何创建圆碰撞检测? C ++

时间:2014-12-07 11:57:11

标签: c++ directx 2d transformation vector-graphics

您好我想知道如何创建一个也可以作为传感器的圆形碰撞。例如,当玩家进入敌人的圆半径时,敌人将开始追逐玩家。 根据我的尝试,我只使用RECT SpriteRect的碰撞盒。但这对于圈子来说不够准确。我正在考虑使用D3DXVECTOR2使用向量,但我不擅长转换。请帮助我如何实现这一目标.. enter image description here

1 个答案:

答案 0 :(得分:6)

点(xa,ya)是否在半径为r的(xc,yc)的圆圈内?

还记得毕达哥拉斯吗? - 它确定两点之间的距离,以及确定某个物体是否在给定半径的圆内的所有距离,是确定到圆心的距离是否小于半径:

bool IsPointInCircle(float xa, float ya, float xc, float yc, float r)
{
   return ((xa-xc)*(xa-xc) + (ya-yc)*(ya-yc)) < r*r;
}

两个圆圈之间的碰撞检测同样容易,你只需要给出&#39; r&#39;作为两个圆的半径之和。因为当圆圈接触时,这就是两个中心之间的距离。

要在正方形和圆形之间进行碰撞检测,您需要计算线与点之间的距离。圆圈几乎是最容易进行碰撞检测的形状。