我有这个“突破风格”的游戏。
我在中心有一门大炮,大炮周围有方块,方块周围有护垫。游戏外观如下:
我设法获得了每个像素的碰撞,并且我的球在与块接触时通过以下数学运算“ 反映 ”:
Ball.Direction = 2 * (Block.Direction - Ball.Direction) + 180;
蓝线是球的方向,黑线(基线)是块的表面。
方向是以弧度表示的角度(当然可以转换为度)。
球通过以下方式移动:
// Event.ENTER_FRAME
x += Math.sin(Direction) * Velocity;
y -= Math.cos(Direction) * Velocity;
到目前为止,一切都很好。
我的问题现在出在垫子上(小彩色块周围的3个深色大块)。
当它们转过来时,表面角度会发生变化。
不仅如此,球也应该击打侧面,那么,如何测量击球的方向和球的新运动方向呢?
ps:如果需要,我可以提供代码和可播放的swf。
编辑
好的,角度问题已通过Vectors解决,但侧面和后部碰撞仍然存在问题。
我将为此打开另一个问题,并将其链接到此处。