我怎样才能 lerp(线性插值)顶 View 游戏的相机,它跟随玩家,所以它在接近目标时不会颤抖。这是我用于相机翻译的代码:
//Creating a vector 3 which represents the target location (my player)
Vector3 target = new Vector3(
(float)player.getPosition().x*map.getTileWidth()+(float)map.getTileWidth()/2,
(float)player.getPosition().y*map.getTileHeight()+(float)map.getTileHeight()/2,
0);
//Creating vector 3 which gets camera position
Vector3 cameraPosition = camera.position;
//Interpolating (lerping) vector
cameraPosition.lerp(target, 0.1f);
//Updating camera and setting it for batch
camera.position.set(cameraPosition);
camera.update();
batch.setProjectionMatrix(camera.combined);
我认为我这样做是对的,但 alpha 值可能太小,但如果我把它变大,那么相机移动太快,就会出现其他问题。我可以用这个 alpha 值停止颤抖吗(在我的例子中 alpha 是 0.1f)?
最佳答案
我认为您不需要线性插值,而是像这样的东西(未经测试, vector 操作最多应被视为伪代码):
//Change speed to your need
final float speed=0.1f,ispeed=1.0f-speed;
//The result is roughly: old_position*0.9 + target * 0.1
cameraPosition.scale(ispeed);
target.scale(speed);
cameraPosition.add(target);
camera.position.set(cameraPosition);
关于java - LibGDX 相机平滑翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24047172/