您好,我想知道如何创建一个同时充当传感器的圆形碰撞。例如,当玩家进入敌人的圈子半径时,敌人就会开始追击玩家。
根据我的尝试,我只使用了一个碰撞盒,它是 RECT SpriteRect
。但这对于圈子来说不够准确。我正在考虑通过使用 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”作为两个圆的半径之和即可。因为,这将是圆接触时两个中心之间的距离。
要进行正方形和圆形之间的碰撞检测,您需要计算线到点的距离。圆形几乎是最容易进行碰撞检测的形状。
关于c++ - 如何创建圆形碰撞检测? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27342362/