Я безнадежно просрочил пост с кодом, но есть уважительная причина — редизай блога, который я планировал уже в течении года. НЕ все еще готово, многие посты придется переписывать, но «процесс идет» как говорится.
А сегодня продолжаем МонстрХантера=)
Создадим класс Speed — скорость перемещения нашего охотника:
private float xv = 1; private float yv = 1; public Speed() { this.xv = 1; this.yv = 1; } public Speed(float xv, float yv) { this.xv = xv; this.yv = yv; } public float getXv() { return xv; } public void setXv(float xv) { this.xv = xv; } public float getYv() { return yv; } public void setYv(float yv) { this.yv = yv; } public void toggleXDirection() { xv = -xv; } public void toggleYDirection() { yv=-yv; }
Добавим апдейт в MHThread:
this.gamePanel.update();
Сам же апдейт выглядит вот так:
public void update() { if(hero.getX()+ hero.getBitmap().getWidth()/2>= getWidth()){ hero.getSpeed().toggleXDirection(); } if( hero.getX()- hero.getBitmap().getWidth()/2<=0){ hero.getSpeed().toggleXDirection(); } if(hero.getY()+ hero.getBitmap().getHeight()/2>= getHeight()){ hero.getSpeed().toggleYDirection(); } if(hero.getY()- hero.getBitmap().getHeight()/2<=0){ hero.getSpeed().toggleYDirection(); } hero.update(); }
Теперь проверяем, при запуске герой двигается сам, соблюдая границы экрана (нужно потестить на разных устройствах — планшеты/телефоны). Теперь сделайте движение касанием — можно по аналогии с прошлыми постами.