【发布时间】:2009-04-14 12:29:03
【问题描述】:
我正在研究乒乓球游戏,并且正在研究移动球的机制。如果我在 x 上加 1,球向右移动 1 个像素,如果我在 y 上加 1,球向底部移动 1 个像素。如果我想将球移动到某个角度怎么办 1 如何计算坐标。
【问题讨论】:
我正在研究乒乓球游戏,并且正在研究移动球的机制。如果我在 x 上加 1,球向右移动 1 个像素,如果我在 y 上加 1,球向底部移动 1 个像素。如果我想将球移动到某个角度怎么办 1 如何计算坐标。
【问题讨论】:
尝试使用角度会变得比您需要的要复杂一些。对于这种动画,您通常希望使用浮点数来存储对象的 x 和 y 坐标,并通过应用 x 和 y 增量来移动它(浮点数将保留在屏幕上绘制时由于舍入而丢失的位置细节)。增量表示您的对象在每个轴上移动的速度,可以是负数或正数。
对于动画的每次迭代,将 xdelta 添加到 x 坐标并将 ydelta 添加到 y 坐标。将它们四舍五入以将它们定位在屏幕上。
当您点击顶部或底部边框时,您将交换 ydelta 组件上的符号,同样交换侧边框。
您不希望始终保持相同的 x 和 y 增量,因此当物体碰到桨时,稍微修改 x 或 y 增量以改变角度。
【讨论】:
您正在寻找线条绘制算法,例如 Bresenham 或 DDA,您可以找到一些合理的实现 here 当然不是绘制一条完整的线,而是沿着这条线移动您的球,但是找到一组线的方式继续前进是一样的。
【讨论】:
您可能会发现these resources 很有帮助。
【讨论】:
对于像 Pong 这样的东西,你应该研究矢量数学,但如果你只想知道一个角度,那么你真正需要的是SOHCAHTOA。
【讨论】: