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