2014-12-07 37 views
1

嗨,我想知道如何创建一个圆形碰撞,也作为一个传感器。例如,当玩家输入敌方的半径时,敌人就会开始追逐玩家。 根据我所尝试的,我只使用了一个碰撞盒,它是RECT SpriteRect。但是这对于这个圈子来说不够准确。我正在考虑通过使用D3DXVECTOR2使用矢量,但我不善于转换。请帮助我如何实现此目的。 enter image description here如何创建一个圆形碰撞检测? C++

+2

我喜欢你的绘画:) – Quest 2014-12-07 11:59:11

+0

@Quest哈哈哈,这只是一个概念。没有制作真正的游戏。只是学习。我以前使用stencyl做过一个。超级简单,因为它都是拖放。所以现在我尽我所能学习C++尽可能多:)如果你喜欢,请看看它:[Lost Dungeon](http://www.kongregate.com/games/yawnm3/lost-dungeon) – Student 2014-12-07 12:02:13

回答

6

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

还记得毕达哥拉斯吗? - 它确定两点之间的距离,并且确定某个半径的圆内是否有某物需要确定到圆心的距离是否小于半径:

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

两个圆之间的碰撞检测同样简单,只需将'r'作为两个圆的半径之和即可。因为这是两个中心接触时的距离。

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

+0

For 3dim( (xa-xc)(xa-xc)+(ya-yc)(ya-yc)+(za-zc)(za-zc)) Quest 2014-12-07 12:14:27

+0

@任务,你尽可能接近:这里是3d球体。 ((xa-xc)(xa-xc)+(ya-yc)(ya-yc)+(za-zc)(za-zc)) Zuu 2014-12-07 12:19:51