Мой персонаж - Актер, и я даю ему действие moveTo, когда я перемещаю его влево или вправо и так далее.
LEFT
и UP
действительно работает. Я вижу это, потому что мой debugmode показывает мне текущую позицию char внутри MapArray. (рисует цвет rectangel)
Если я звоню DOWN
и RIGHT
, он делает прогулку UP
или LEFT
, но я уверен, что я прав с направлением. Если я поправлюсь, он действительно поднимется, и если я нажму на него, он тоже поднимется!
Надеюсь, вы скажете мне, почему они идут в неправильном направлении!
Вот ход Methode где я ПГТ Действия актера:Actions.moveTo перемещается в неправильном направлении
private void move(Status direction) {
switch (direction) {
case LEFT:
this.clearActions();
this.addAction(Actions.sequence(
Actions.moveTo((getX() - Config.BLOCK_SIZE), getY(), speed),
new RunnableAction() { //to know when hes done to get the next move
public void run() {
moveDone = true;
}
}));
break;
case RIGHT:
this.clearActions();
this.addAction(Actions.sequence(
Actions.moveTo((getX() + Config.BLOCK_SIZE), getY(), speed),
new RunnableAction() {
public void run() {
moveDone = true;
}
}));
case DOWN:
this.clearActions();
this.addAction(Actions.sequence(
Actions.moveTo(getX(), (getY() - Config.BLOCK_SIZE), speed),
new RunnableAction() {
public void run() {
moveDone = true;
}
}));
case UP:
this.clearActions();
this.addAction(Actions.sequence(
Actions.moveTo(getX(), (getY() + Config.BLOCK_SIZE), speed),
new RunnableAction() {
public void run() {
moveDone = true;
}
}));
default:
break;
}
}
А вот как я называю это. Я надеюсь, что это прекрасно, что я отправляю немного более длинный код! Его более или менее просто устанавливают правильные позиции.
@Override
public void act(float delta) {
super.act(delta);
if (moveDone) {
if (screen.pad.isTouched()) {
// check in which direction is the touchcontroller
if (screen.pad.getKnobPercentX() < 0
&& Math.abs(screen.pad.getKnobPercentY()) < Math
.abs(screen.pad.getKnobPercentX())) {
// checkt if the |x|>|y|
if (checkNextMove(Status.LEFT)) {
this.status = Status.LEFT;
move(Status.LEFT);
this.screen.map.mapArray[(int) (this.mapPos.x)][(int) this.mapPos.y] = Config.EMPTYPOSITION;
this.screen.map.mapArray[(int) (this.mapPos.x - 1)][(int) this.mapPos.y] = Config.CHARSTATE;
this.mapPos.x--;
moveDone = false;
}
} else if (screen.pad.getKnobPercentX() > 0
&& Math.abs(screen.pad.getKnobPercentY()) < Math
.abs(screen.pad.getKnobPercentX())) {
if (checkNextMove(Status.RIGHT)) {
move(Status.RIGHT);
this.status = Status.RIGHT;
this.screen.map.mapArray[(int) (this.mapPos.x)][(int) this.mapPos.y] = Config.EMPTYPOSITION;
this.screen.map.mapArray[(int) (this.mapPos.x + 1)][(int) this.mapPos.y] = Config.CHARSTATE;
this.mapPos.x++;
moveDone = false;
}
} else if (screen.pad.getKnobPercentY() > 0) {
if (checkNextMove(Status.DOWN)) {
this.status = Status.DOWN;
move(Status.DOWN);
this.screen.map.mapArray[(int) (this.mapPos.x)][(int) this.mapPos.y] = Config.EMPTYPOSITION;
this.screen.map.mapArray[(int) (this.mapPos.x)][(int) this.mapPos.y + 1] = Config.CHARSTATE;
this.mapPos.y++;
moveDone = false;
}
} else {
if (checkNextMove(Status.UP)) {
this.status = Status.UP;
move(Status.UP);
this.screen.map.mapArray[(int) (this.mapPos.x)][(int) this.mapPos.y] = Config.EMPTYPOSITION;
this.screen.map.mapArray[(int) (this.mapPos.x)][(int) this.mapPos.y - 1] = Config.CHARSTATE;
this.mapPos.y--;
moveDone = false;
}
}
} else {
setIdle();
}
}
// methode from the absctract to change sprites
updateSprite(delta);
}
Вот изображение, как оно выглядит, если я иду вправо. Он стоял слева от зеленого поля и теперь находится в правильном поле. Но картины нет.
Здесь Розыгрыш полукокса:
@Override
public void draw(SpriteBatch batch, float parentAlpha) {
sprite.setPosition(this.getX(), this.getY());
sprite.draw(batch);
}
я действительно не вижу, где ошибка. надеюсь, вы можете помочь!
О Данг я так жаль, что длинный вопрос только потому, что не хватает перерыва. Большое спасибо, я просто этого не видел. – BennX
Хе-хе .. :) не проблема – Elior
@Benjamin Я также хочу разработать некоторые игры. Могу ли я спросить, используете ли вы для этого несколько уроков? и если вы можете направить меня на какой-то учебник, который вы нашли? :) – Elior