libgdx桌面应用程序中闪烁的对象图像移动
此代码使图像在向左、向右、向下或向上移动时闪烁libgdx桌面应用程序中闪烁的对象图像移动,libgdx,Libgdx,此代码使图像在向左、向右、向下或向上移动时闪烁 public class MoveSpriteExample extends GdxTest implements InputProcessor { Texture texture; SpriteBatch batch; OrthographicCamera camera; Vector3 spritePosition = new Vector3(); Sprite sprite; public
public class MoveSpriteExample extends GdxTest implements InputProcessor {
Texture texture;
SpriteBatch batch;
OrthographicCamera camera;
Vector3 spritePosition = new Vector3();
Sprite sprite;
public void create() {
float w = Gdx.graphics.getWidth();
float h = Gdx.graphics.getHeight();
batch = new SpriteBatch();
camera = new OrthographicCamera();
camera.setToOrtho(false, w, h);
texture = new Texture(Gdx.files.internal("data/TestImg.png"));
texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
sprite = new Sprite(texture);
sprite.setSize(32, 32);
spritePosition.y=100;
sprite.setPosition(spritePosition.x,spritePosition.x);
}
public void render() {
// set the clear color and clear the screen.
Gdx.gl.glClearColor(1,1, 1, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
// camera.apply(Gdx.gl10);
sprite.setPosition(spritePosition.x,spritePosition.y);
batch.begin();
sprite.draw(batch);
batch.end();
if (Gdx.input.isKeyPressed(Keys.D)==true)
{
spritePosition.x += 2;
}else if (Gdx.input.isKeyPressed( Keys.A)==true)
{
spritePosition.x -= 2;
}
else if (Gdx.input.isKeyPressed( Keys.Z)==true)
{
spritePosition.y -= 2;
}
else if (Gdx.input.isKeyPressed( Keys.W)==true)
{
spritePosition.y += 2;
}
// camera.unproject(spritePosition.set(Gdx.input.getX(), Gdx.input.getY(), 0));
// if a finger is down, set the sprite's x/y coordinate.
}
}
是的,它会闪烁,因为你每帧移动2次。这就像是每秒120像素。您需要根据增量时间移动它。(而且在没有烟雾的时候总是2倍) 例如,您希望每秒将其移动50px到按下的方向,您可以这样做
spritePosition.y += 50f*Gdx.graphics.getDeltaTime();
您会根据deltatime而不是帧速率更新所有内容。deltatime是最后一帧与此帧之间的时间
通常,您会使用屏幕创建这样的设置。如果设置了屏幕,则会使用增量时间调用渲染方法。(来自接口的方法)
你应该看一下这张照片。它确实为您提供了一个非常好的libgdx开端。祝你好运。是的,它确实会闪烁,因为你每帧移动它两次。这就像是每秒120像素。您需要根据增量时间移动它。(而且在没有烟雾的时候总是2倍) 例如,您希望每秒将其移动50px到按下的方向,您可以这样做
spritePosition.y += 50f*Gdx.graphics.getDeltaTime();
您会根据deltatime而不是帧速率更新所有内容。deltatime是最后一帧与此帧之间的时间
通常,您会使用屏幕创建这样的设置。如果设置了屏幕,则会使用增量时间调用渲染方法。(来自接口的方法)
你应该看一下这张照片。它确实为您提供了一个非常好的libgdx开端。祝你好运