Доступ к елементам массива, которые являются экземплярами классов, которые связаны между собой

109
09 мая 2021, 23:30

Я хочу сделать игру платформер (используя Processing) и столкнулся с такой проблемой. У меня есть 2 типа блоков: стационарные (неподвижные) и те которые двигаются туда сюда по определённому маршруту

Вот класс неподвижного блока


public class Block{
  AABB aabb;
  Block(int x, int y, int w, int h){
    aabb = new AABB(x, y, x+w, y+h);
  }
  void draw(){
    rect(aabb.min.x, aabb.min.y, aabb.getWidth(), aabb.getHeight());
  }
}

А вот класс двигающегося блока


class MovingBlock extends Block{
  PVector vel, A, B;
  MovingBlock(int x, int y, int w, int h, PVector B, float speed){
    super(x, y, w, h);
    this.A = aabb.min.copy();
    this.B = B.copy();
    B.sub(aabb.min).setMag(speed);
    this.vel = B;
  }
  void update(){
    aabb.moveByVector(vel);
    if (aabb.min.copy().sub(A).magSq() < 0.25 || aabb.min.copy().sub(B).magSq() < 0.25){
      vel.mult(-1);
    }
  }
}

И вот в чем проблема - я храню все эти блоки в ArrayList`е

ArrayList<Block> blocks;

Когда я в игровом цикле прохожусь по ним, мне надо сделать вот такую вещь:


for (Block block : blocks){
  //какой-то код
  if (block instanceof MovingBlock){
    player.vel = block.vel.copy();
  }
}

Но при попытке запустить Processing выдаёт такой текст:

vel cannot be resolved or is not a field
READ ALSO
Ошибка в Eclipse Window Builder: This is not a GUI class and can&#39;t be edited graphically?

Ошибка в Eclipse Window Builder: This is not a GUI class and can't be edited graphically?

Появилась ошибка в Eclipse Window Builder Я в eclipse новичок, не знаю как исправить!

340
Создание постера с помощью canvas

Создание постера с помощью canvas

Как создать постер к видео с помощью canvas и js чтоб постеры к видео создавались при загрузке страницы с видео ну или создавались при загрузке...

117
Приватный сервер из файлов браузерной игры

Приватный сервер из файлов браузерной игры

Сегодня мой друг сделал приватный сервер из одной браузерной игры под названием starveio

101