我认为更简单的方法是使用导弹的速度而不是计算角度。假设您有一枚导弹,该导弹具有
xVelocity并
yVelocity表示其水平和垂直运动。这些速度可以为正或负,分别代表左,右,上或下。
- 如果导弹击中顶部或底部边界,则反之
yVelocity
。 - 如果导弹击中了左或右边界,则反转导弹的标志
xVelocity
。
这将使相反轴的运动保持不变。
从ChrisF的答案中借来的图像,比方说,导弹从位置I开始发射。
在
xVelocity和
yVelocity均为正的情况下(在2D图形中,右侧和向下通常为正),导弹将沿指示的方向行进。让我们只分配的值
xVelocity = 3yVelocity = 4
当导弹在 C 位置击中墙壁时,它
xVelocity不应改变,但
yVelocity应反转至-4,以便其沿向上方向返回,但仍向右移动。
这种方法的好处是,你只需要保持一个导弹的轨道
xPosition,
yPosition,
xVelocity,和
yVelocity。仅使用这四个组件和游戏的更新速率,导弹将始终在正确的位置重绘。一旦遇到不成直角或没有移动的更复杂的障碍,使用X和Y速度将比使用角度容易得多。



