矩形上的碰撞检测,如何知道哪边被击中
我想为矩形创建一个碰撞检测系统以使用一些物理原理,因此每条边都会有一个法线。如何确定物体击中了正方形的哪一侧。另一个物体是一个圆。
谢谢。;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我想为矩形创建一个碰撞检测系统以使用一些物理原理,因此每条边都会有一个法线。如何确定物体击中了正方形的哪一侧。另一个物体是一个圆。
谢谢。;
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
如果不知道您正在使用的库(或者查看您的代码,如果您自己编写代码),则很难准确地知道,但大概您只是在寻找两个对象主体中的重叠部分。
该算法必须进行某种数学运算,以确定一个对象的坐标是否位于另一个对象的边界内。假设您只是在 xy 平面上工作,您可以将一个对象的中心与重叠区域进行比较。正 delta x,右;负 delta x,左。 y 轴的工作方式相同。如果拐角发生碰撞,这不一定能给出有保证的答案。
It's hard to know exactly without knowing the library you're using (or seeing your code, if you wrote it yourself), but presumably you're simply looking for overlap in the bodies of the two objects.
The algorithm has to do some sort of math to find out if there are coordinates of one object inside the boundaries of the other object. Assuming that you're just working on an x-y plane, you can compare the center of one object to the overlapping area. Positive delta x, right; negative delta x, left. The y axis would work the same way. This wouldn't necessarily give a guaranteed answer if the corners collided.
我知道这已经晚了,但可以将碰撞到矩形的点,从与其碰撞的矩形的中心减去它。从减法中取出新向量,并将其与矩形的四个法线进行比较,以最接近被击中的一侧为准。当你只有几条边时,这是一种快速方法,但当你有很多边来比较时,你会放慢速度。我同意这个问题与代码无关,他没有要求我们为他编码。他要求一个算法。
I know this is late but it is possible to take the point colliding into the rectangle, subtract it from the the center of the of the rectangle it collided with. Take the new vector from the subtraction and compare it to the four normals of the rectangle, whichever its closest to is the side that was hit. A quick method when you only have a few sides on the but when you have lots of sides to compare it with you will slow down. And I agree this question has nothing to do with code, he didn't ask us to code it for him. He asked for an algorithm.