У Bomberman’а теперь есть враги

Добавил врагов на уровне. Balloom не просто двигаются по карте, но и взаимодействуют с миром. По мимо того, что умеют обходить препятствия, они ещё и могут убить нашего персонажа.

Для начала решил логику объектов запихать в классы самих объектов. Почему-то во многих туториалах логику взаимодействий выносит на уровень контроллера, а сами объекты чисто как контейнер координат юзают. Странно это всё. Даже с точки зрения логики: игрок осматривает мир и проверяет может ли он обойти препятствие, а не мир проверяет, может ли игрок обойти стену. Конечно, понимаю, вынося всю логику на уровень контроллера, весь контроль будет в одном классе. Но мне удобнее всё же описывать взаимодействие объекта с точки зрения объекта.

Так что, теперь в классе экрана при рендеринге вызывается лишь update() контроллера:

public class GameScreen implements Screen, InputProcessor {...@Overridepublic void render(float delta) {  Gdx.gl.glClearColor(0, 118F/255, 0, 1);  Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);  controller.update(delta);  renderer.render();}...}

А внутри контроллера в методе по обновлению вызываю обновление всех объектов мира:

 public void update(float delta) {  processInput();  bomberman.update(delta);  for(NpcBase npc : world.getNpcs()){npc.update(delta);  }}

Собственно, вся остальная логика запихана в сами объекты. У bomberman’а например:

public void update(float delta) {  //проверка на проходимость по блокам  collisionDetectionBlocks();  //проверка на проходимость по бомбам  collisionDetectionBombs();  ...  //указываем направление  position.add(velocity.tmp().mul(delta)); }

На будущее:размеры спрайтов должны быть степенью двойки. Я сначала сделал просто, чтоб кратно было двум. На моём 4+ Android’е норм работало. Но на 2.2 версии вылетало с ошибкой.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *