我的对象有一个点 x,y,当鼠标在 800x600 的框内拖动它时,它总是会发生变化。我的对象也可以旋转到鼠标设置的角度,它可以是任何 360 度。我现在的问题是如何从那个角度发射弹丸,当然还有那个 XY 位置。抛射物只需要直线运动,但它需要像主物体一样以正确的角度移动。我有角度,我有 XY 位置,我所需要的只是让它从适当的角度穿过网格的公式。
编辑 - 当前的 JSFIDDLE,弹丸没有以正确的角度射击。 http://jsfiddle.net/vbk4Z/16/
我的对象有一个点 x,y,当鼠标在 800x600 的框内拖动它时,它总是会发生变化。我的对象也可以旋转到鼠标设置的角度,它可以是任何 360 度。我现在的问题是如何从那个角度发射弹丸,当然还有那个 XY 位置。抛射物只需要直线运动,但它需要像主物体一样以正确的角度移动。我有角度,我有 XY 位置,我所需要的只是让它从适当的角度穿过网格的公式。
编辑 - 当前的 JSFIDDLE,弹丸没有以正确的角度射击。 http://jsfiddle.net/vbk4Z/16/
标准公式为:
xn = x0 + v * t * cos(theta)
yn = y0 + v * t * sin(theta)
(x0, y0)
原始位置在哪里,v
是所需的速度,theta
是角度(以弧度为单位),t
是自射弹发射以来的时间。
请注意,这使用了经典的笛卡尔约定,即相对于正 x 轴逆时针测量角度,并且 y 轴朝上。
如果您正在使用浏览器坐标,并且碰巧选择了使用方位角(相对于“向上”/“北”的顺时针方向),那么您需要交换一些符号和三角函数:
xn = x0 + v * t * sin(theta)
yn = y0 - v * t * cos(theta)