java - LibGDX 相机平滑翻译

标签 java opengl camera libgdx

我怎样才能 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/

相关文章:

objective-c - 从传递 float 组的 C 函数调用 Objective C 函数

java - 关于Java的复制构造函数问题

eclipse - 在 JPanel 中绘图

opengl - GLSL 变量将对象变黑

android - 在特定时间在android中显示图片

java - 如何使用网络摄像头扫描条形码?

java - 使用 Apache POI 在 Java 中导出到 Excel

Java - 特定泛型实例的实例方法

performance - 当点具有相同的深度时,opengl 深度缓冲区变慢

c++ - 如何使用 Opengl 加载和显示纹理