我玩了一段时间,但我根本无法弄清楚。
我制造了一个可以发射导弹的坦克,当导弹撞到墙壁时,我希望它们反弹,但我希望它们以合适的角度反弹。
现在我没有任何障碍,当导弹离开viewportRectangle我制造的导弹时,它们就会反弹。
viewportRectangle
我正在寻找的解决方案是否很高级?
有相对简单的方法吗?
我认为更简单的方法是使用导弹的速度而不是计算角度。假设您有一枚导弹,该导弹具有xVelocity并yVelocity表示其水平和垂直运动。这些速度可以为正或负,分别代表左,右,上或下。
xVelocity
yVelocity
这将使相反轴的运动保持不变。
从ChrisF的答案中借来的图像,比方说,导弹从位置I开始发射。
在xVelocity和yVelocity均为正的情况下(在2D图形中,右侧和向下通常为正),导弹将沿指示的方向行进。让我们只分配的值
xVelocity = 3 yVelocity = 4
当导弹在 C 位置击中墙壁时,它xVelocity不应改变,但yVelocity应反转至-4,以便其沿向上方向返回,但仍向右移动。
这种方法的好处是,你只需要保持一个导弹的轨道xPosition,yPosition,xVelocity,和yVelocity。仅使用这四个组件和游戏的更新速率,导弹将始终在正确的位置重绘。一旦遇到不成直角或没有移动的更复杂的障碍,使用X和Y速度将比使用角度容易得多。
xPosition
yPosition