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

如何创建圆碰撞检测?C++,c++,directx,2d,transformation,vector-graphics,C++,Directx,2d,Transformation,Vector Graphics,嗨,我想知道如何创建一个圆碰撞,它也作为一个传感器。例如,当玩家进入敌人的圆圈半径时,敌人将开始追逐玩家。 根据我的尝试,我只使用了一个碰撞框,它是RECT spritect。但这对于圆来说还不够精确。我想用D3DXVECTOR2来使用vector,但我不擅长转换。请帮助我如何实现这一点。。 点xa,ya是否在半径为r的xc,yc的圆内 还记得毕达哥拉斯吗它确定两点之间的距离,您需要确定某个物体是否在具有给定半径的圆内,只需确定到圆心的距离是否小于半径: bool IsPointInCircle

嗨,我想知道如何创建一个圆碰撞,它也作为一个传感器。例如,当玩家进入敌人的圆圈半径时,敌人将开始追逐玩家。 根据我的尝试,我只使用了一个碰撞框,它是RECT spritect。但这对于圆来说还不够精确。我想用D3DXVECTOR2来使用vector,但我不擅长转换。请帮助我如何实现这一点。。
点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;
}
两个圆之间的碰撞检测同样简单,只需将两个圆的半径之和设为“r”。因为,这就是圆接触时两个中心之间的距离


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

点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;
}
两个圆之间的碰撞检测同样简单,只需将两个圆的半径之和设为“r”。因为,这就是圆接触时两个中心之间的距离


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

我喜欢你的画:@Quest Hahaha这只是一个概念。不是真正的游戏。只是学习。我以前用stencyl做过一个。超级简单,因为它是所有的拖放。所以现在我尽我最大的努力去学习C++:如果你喜欢的话,请检查一下:我喜欢你的绘画:@ QuestHaHA,这只是一个概念。不是真正的游戏。只是学习。我以前用stencyl做过一个。超级简单,因为它是所有的拖放。所以现在我尽我最大的努力去学习C++:如果你喜欢的话,请检查一下:对于3DIM XA XCXA XC+YYYA YC+ZA ZCZA ZC*R*R?@ Questy,你可以尽可能接近:这里是3D的球体。xa xcxa xc+ya ycya yc+za zcza zc