我是新來libgdx,我試圖做一個精靈的舉動,而相機如下。我可以讓精靈完美地移動,直到我將相機連接到它。當我點擊時,精靈將移動到它感覺的任何地方(看起來),並且相機將正確地跟隨。我嘗試了一些不同的東西,但在這一點上它只是猜測和檢查。雪碧不能正常移動。 libgdx
public class MyGdxGame implements ApplicationListener {
OrthographicCamera mCamera;
SpriteBatch mBatch;
Texture mTexture, mMap;
Sprite sprite;
float touchX, touchY;
float spriteX, spriteY, speed = 5;
@Override
public void create() {
float CAMERA_WIDTH = 480, CAMERA_HEIGHT = 320;
mBatch = new SpriteBatch();
mTexture = new Texture(Gdx.files.internal("data/logo.png"));
mMap = new Texture(Gdx.files.internal("data/sc_map.png"));
mCamera = new OrthographicCamera(CAMERA_WIDTH, CAMERA_HEIGHT);
mCamera.setToOrtho(false, CAMERA_WIDTH, CAMERA_HEIGHT);
}
@Override
public void dispose() {
}
@Override
public void render() {
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
mBatch.setProjectionMatrix(mCamera.combined);
mCamera.update();
mBatch.begin();
updateInput();
drawD();
mBatch.end();
}
@Override
public void resize(int width, int height) {
}
@Override
public void pause() {
}
@Override
public void resume() {
}
public void drawD() {
mCamera.position.set(spriteX, spriteY, 0);
mBatch.draw(mMap, 0, 0);
mBatch.draw(mTexture, spriteX, spriteY);
}
public void updateInput() {
if (Gdx.input.justTouched()) {
touchX = Gdx.input.getX();
touchY = Gdx.input.getY();
}
if (touchX != spriteX) {
if (spriteX < touchX) {
spriteX += speed;
}
if (spriteX > touchX) {
spriteX -= speed;
}
}
if (touchY != spriteY) {
if (spriteY > Gdx.graphics.getHeight() - touchY) {
spriteY -= 10;
}
if (spriteY < Gdx.graphics.getHeight() - touchY) {
spriteY += 10;
}
}
}
}
你能描述更詳細的你是什麼意思遵循「? – Jyro117 2013-03-18 03:18:02
當用戶點擊/觸摸時,我想獲取x和y座標並讓精靈在那裏移動。相機應隨之移動,因此精靈將始終位於相機的中心。類似於Diablo這樣的遊戲。 – user2180581 2013-03-18 06:17:42
當我有機會的時候,我會發佈一個真實的答案(如果有人不打我的話)。你可以按照自己想要的一種方式在屏幕中心繪製角色,固定相機,然後沿相反方向移動地圖/敵人/物體等,而不是移動角色。這給人物移動的幻覺,但保持他們在屏幕的中心。 – Jyro117 2013-03-18 13:03:55