【问题标题】:moving items in JPanel在 JPanel 中移动项目
【发布时间】:2009-04-14 12:29:03
【问题描述】:

我正在研究乒乓球游戏,并且正在研究移动球的机制。如果我在 x 上加 1,球向右移动 1 个像素,如果我在 y 上加 1,球向底部移动 1 个像素。如果我想将球移动到某个角度怎么办 1 如何计算坐标。

【问题讨论】:

    标签: math jpanel


    【解决方案1】:

    尝试使用角度会变得比您需要的要复杂一些。对于这种动画,您通常希望使用浮点数来存储对象的 x 和 y 坐标,并通过应用 x 和 y 增量来移动它(浮点数将保留在屏幕上绘制时由于舍入而丢失的位置细节)。增量表示您的对象在每个轴上移动的速度,可以是负数或正数。

    对于动画的每次迭代,将 xdelta 添加到 x 坐标并将 ydelta 添加到 y 坐标。将它们四舍五入以将它们定位在屏幕上。

    当您点击顶部或底部边框时,您将交换 ydelta 组件上的符号,同样交换侧边框。

    您不希望始终保持相同的 x 和 y 增量,因此当物体碰到桨时,稍微修改 x 或 y 增量以改变角度。

    【讨论】:

      【解决方案2】:

      您正在寻找线条绘制算法,例如 Bresenham 或 DDA,您可以找到一些合理的实现 here 当然不是绘制一条完整的线,而是沿着这条线移动您的球,但是找到一组线的方式继续前进是一样的。

      【讨论】:

        【解决方案3】:

        您可能会发现these resources 很有帮助。

        【讨论】:

          【解决方案4】:

          对于像 Pong 这样的东西,你应该研究矢量数学,但如果你只想知道一个角度,那么你真正需要的是SOHCAHTOA

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-07-19
            • 1970-01-01
            • 2016-06-14
            • 2015-02-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多