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