如何制作流畅的摄像机跟踪算法?

Ave*_*yan 20 java opengl 2d smooth-scrolling libgdx

我正在用LibGDX(Java)制作游戏.

我需要相机跟随一个快速移动的角色.最简单的方法是写这个:

this.getCamera().position.set(obj.x, obj.y, 0);
Run Code Online (Sandbox Code Playgroud)

但是,有没有算法使这更顺利?就像相机不是那么严格,而且总是有点迟了:角色走得很快,相机跟着稍微延迟,或者如果你突然出现在远处,相机不会瞬间传送,但是当它以最快速度传送给你时越来越近,它慢慢减速并再次找到你.

是否有任何libgdx libs可以做到这一点或任何人有这种经验?

Rod*_*yde 44

尝试一些简单的事情,例如距离的十分之一.它运作得非常好.

float lerp = 0.1f;
Vector3 position = this.getCamera().position;
position.x += (Obj.x - position.x) * lerp * deltaTime;
position.y += (Obj.y - position.y) * lerp * deltaTime;
Run Code Online (Sandbox Code Playgroud)

  • 建议:也乘以delta-time使运动独立于帧速率. (17认同)

Mut*_*enu 6

看看Aurelion Ribon的Java Universal Tween Engine.这会执行插值并有几个缓动方程式,我认为这些方程式可以满足您的需求.它还具有其他高级功能,如寻路和将某些动作链接在一起以用于其他有趣的效果.

您的游戏逻辑可以检查角色是在快速移动还是在位置方面有所改变.为此,将当前摄像机位置转到补间引擎,让它接管 - 平滑地缩放到角色的当前位置.