java如何使LibGDX动作moveTo()以曲线的形式从一点到另一点进行动画制作?
我正在LibGDX上做一个项目,我正在为我的一些精灵使用Scene2D演员。在这方面,我有一个精灵,它正在屏幕上某个地方繁殖,需要移动到屏幕上的另一个位置。为此,我在Actions中使用了moveTo(xPos, yPos, duration, interpolation)
方法来制作移动动画
然而,当我使用这种方法时,演员按照我告诉它的方式移动,但它只在一条直线上移动,从点a到点B。我尝试了几种插值选项,如圆插值等,但它似乎只会影响动画线的速度
所以现在我的问题是:如何让我的动画从a到B画一条平滑的曲线(见图)?
我目前正在使用以下代码制作动作动画:
adultCustomerPointActor.addAction(Actions.sequence(
Actions.moveTo(300, 200, 2f, Interpolation.circle)
));
提前感谢您的帮助:)
# 1 楼答案
这是一个几何问题。使用向量,找到两点中间的点:
从点之间的矢量获取另一个距离为90或270的矢量:
此
vec2
可以缩放以调整圆弧的极端曲率。如果你不去管它,你会有一个四分之一圆。也可以将其缩放为负值以反转曲率然后把第二个向量加到第一个向量上,找到弧的中心点,我们称之为点C
现在你需要一个从C点指向a点的向量。你将旋转这个向量直到它到达B点。所以你需要CA和CB之间的角度
这里有一个非常简单的类来实现这个。它还不能用来决定你想让弧线上升还是下降,以及你想让它看起来有多极端。您可以使用getter/setter添加这些参数作为附加参数。我还没有测试它,所以可能需要一些调试
如果要支持自动池,可以添加如下方法: