我刚刚开始学习有关Graphics2D类的基础知识,到目前为止,我能够绘制不同的对象并实现ActionListener
,以便onKeyPress
在屏幕上实际移动它们。到目前为止一切都那么好,虽然我想做一些更复杂的事情。我想为我的对象提供路径,并仅在该特定路径上为其设置动画。
有点像,我会在天空画一条线,一架飞机应该坚持画线并保持自己在该特定线上飞行。现在有可能吗?
我不需要任何类型的代码,但是很少有不同的方法或想法可以让我开始研究这个问题。我想法的可视化阐述如下。
起点:
终点:
现在如上图所示,我的黄色方框(在未来的平面中)应该在动画(路径灰线)的同时坚持给定的路径
到目前为止,我的研究
我搜索了我的流行语,例如java中的路径,找到了Path2D
和GeneralPath
类,有谁知道我是否可以用它来解决这个问题。
由于
答案 0 :(得分:2)
太棒了!
它让我想起了我在IT方面的第一步。我多么喜欢所有这些简单的数学东西,但这让事情在屏幕上移动。 :)
您需要的是线性插值。还有其他种类的插值和一些api为这个概念提供了一个很好的封装,但这是主要的想法,你经常需要这些东西:
你必须重写你的路径
y = f (x )
作为时间的函数:
在时间0,项目将在开始位置,在时间1,它将到达结束。然后根据需要增加时间(t)(例如每0.001毫秒)。
所以这是一个简单线性路径的公式:
x = xstart + (xend-xstart) * t
y = ystart + (yend-ystart) * t
当t变化时,你的物体将沿着路径线性移动,线性地使速度在所有路径上都是恒定的。你可以想象一下最后的某种重力吸引力,这可以通过二次加速度(t ^ 2而不是t)来建模......
此致 斯蒂芬
答案 1 :(得分:1)
首先,使能力从a点移动到b点。这是通过简单的代数完成的。
其次,能够采取路径并将其转化为点。然后,当你要做曲线时,你真的只是沿着那条曲线从一点到另一点移动。
这是最基本的方法,适用于大多数情况。
答案 2 :(得分:1)
你所说的是简单的2D图形和精灵。如果这就是你所需要的,那么对于Java来看看Java 2D Sprites如果你倾向于更倾向于或最终会使用相机视角,并希望从不同角度观看动画,那么请使用Java 3D from the OpenSource Java 3D.org。无论哪种方式你想要的是沿着一条线简单地翻译对象,在2D或3D中非常简单。
答案 3 :(得分:1)
您可以尝试浏览我的开源大学项目代码 - LANSim。它的代码在代码菜单中可用。它的确类似于你想要做的事情。