У меня есть плиточная карта шириной 40960 пикселей и высотой 640 пикселей.LibGdx - SideScroller с TiledMap и двумя актерами
У меня также есть главный символ и badguy, которые являются 64px wide и 64px high.
Предполагая, что левый нижний угол плиточной карты отображается в (0,0) в пикселях. Я пытаюсь запустить главный символ в позиции (0,0) плиточной карты и иметь возможность полностью перемещаться на другой конец плиточной карты вдоль оси x, зависящей от ввода пользователя.
Также я хочу, чтобы плохой парень отображался на (255,0) по оси x и имел диапазон перемещения между 255 и 511 по оси x, это будет управляться программно.
В настоящий момент в моем коде будет отображаться черепичная карта и два символа, но когда я перемещаю один из символов, другой персонаж также перемещается.
I have a link here to an image for clarity
Вот мой код в классе, который реализует интерфейс экрана libGdx.
public TestScreen(MyGame game){
this.game = game;
camera = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
camera.position.set(Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight()/2, 0);
camera.update();
String filename = "levelMaps/level_1.tmx";
map = new TmxMapLoader().load(filename);
mapRenderer = new OrthogonalTiledMapRenderer(map);
mainPlayer = new Player();
badGuy = new BadGuy();
badGuy.velocity.x = camera.position.x;
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0, 0, 0.2f, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
mapRenderer.setView(camera);
mapRenderer.render();
game.batch.begin();
mainPlayer.render(game.batch);
badGuy.render(game.batch);
game.batch.end();
//simple input handling
if(Gdx.input.isKeyPressed(Keys.LEFT)){
if(mainPlayer.velocity.x >= 0 && camera.position.x > 400){
mainPlayer.moveLeft();
camera.position.x -= Math.abs(superSim.velocity.x);
} else {
camera.position.x = 400;
superSim.velocity.x = 0;
}
}
if(Gdx.input.isKeyPressed(Keys.RIGHT)){
if(mainPlayer.velocity.x >= 0 && camera.position.x < 41286-(64*12)){
mainPlayer.moveRight();
camera.position.x += superSim.velocity.x;
}
}
camera.update();
mainPlayer.update(delta);
}
Как я могу получить положение badguys, чтобы оставаться неизменным, пока позиция игроков динамична?
Anyhelp действительно оценили
, который является superSim, я думаю, что вы должны добавить к вашему вопросу –
С другой стороны, вы говорите: 'badGuy.velocity.x = camera.position.x;' правильно или хотите сказать 'badGuy.position. x = camera.position.x; ' –
yep thats right –