Java 向下移动摄影机时对象会抖动
我一直在做一个游戏,在这个游戏中,有很多物体以负“y”的形式出现,而我已经使用了arrayList,我正在向下移动主要角色。但是当相机与角色一起移动时,物体移动不平稳,它们在一段时间后会出现抖动。下面是代码Java 向下移动摄影机时对象会抖动,java,android,libgdx,Java,Android,Libgdx,我一直在做一个游戏,在这个游戏中,有很多物体以负“y”的形式出现,而我已经使用了arrayList,我正在向下移动主要角色。但是当相机与角色一起移动时,物体移动不平稳,它们在一段时间后会出现抖动。下面是代码 @Override public void create() { camera = new OrthographicCamera(480, 720); camera.position.set(480 / 2, 720 / 2, 0); batch = new Spri
@Override
public void create() {
camera = new OrthographicCamera(480, 720);
camera.position.set(480 / 2, 720 / 2, 0);
batch = new SpriteBatch();
int i;
this.baloonArrList = new ArrayList<Baloon>();
for (i = 0; i < 3000; i += 300) {
Baloon baloon = new Baloon(200, i);
baloonArrList.add(baloon);
System.out.println(baloon.balloon_y);
}
texture1 = new Texture(Gdx.files.internal("data/sheet_final.png"));
textureRegion1 = new TextureRegion(texture1, 561, 156, 115, 101);
}
@Override
public void render() {
GLCommon gl = Gdx.gl;
Gdx.gl.glClearColor(1, 1, 1, 1);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
camera.position.y += 4;
camera.update();
batch.setProjectionMatrix(camera.combined);
batch.begin();
int len = baloonArrList.size();
for (int i = 0; i < len; i++) {
batch.draw(textureRegion1, baloonArrList.get(i).balloon_x,
baloonArrList.get(i).balloon_y, 100, 100);
}
batch.end();
}
@覆盖
公共void create(){
摄像机=新的正交摄像机(480720);
摄像机位置设置(480/2720/2,0);
批次=新的SpriteBatch();
int i;
this.baloonArrList=new ArrayList();
对于(i=0;i<3000;i+=300){
巴伦巴伦=新巴伦(200,i);
baloonArrList.添加(baloon);
System.out.println(baloon.balloon_y);
}
texture1=新纹理(Gdx.files.internal(“data/sheet_final.png”);
纹理区域1=新纹理区域(纹理1、561、156、115、101);
}
@凌驾
公共无效呈现(){
GLCommon gl=Gdx.gl;
Gdx.gl.glClearColor(1,1,1,1);
gl.glClear(GL10.gl\u颜色\u缓冲\u位);
摄像机位置y+=4;
camera.update();
batch.setProjectionMatrix(camera.combined);
batch.begin();
int len=baloonArrList.size();
对于(int i=0;i
那么,我怎样才能使物体的运动平稳呢。我认为你的问题的根源在于以下几行:
camera.position.y += 4;
您应该将其更改为较小的值,或者更好地根据帧速率的速度进行更改:
camera.position.y += 4 * Gdx.graphics.getDeltaTime();
这样,您的相机将在y方向上每秒移动4个像素,而不是每帧移动4个像素。(当然,您可能需要增加4以加快渲染速度,但它会使渲染过程非常平滑。)如果渲染不平稳且不一致(请使用以了解获得的帧速率),则渲染过程中会花费更多/可变的时间。您应该使用探查器来计算时间的走向。Eclipse附带的Android DDMS工具相当不错。过于频繁的垃圾收集通常是可变运行时的一个来源,但在试图修复它之前,最好先了解发生了什么
也就是说,@Jyro117建议让你的状态更新与帧速率无关始终是一个好主意。问题是发生在Android、桌面还是两者都有?@RodHyde这两种系统都有。