Воскресенье, 22 Декабря 2024, 23:46

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Коллизии в 2D
TheWickerManДата: Воскресенье, 16 Декабря 2012, 01:02 | Сообщение # 1
частый гость
Сейчас нет на сайте
Делаю платформер на С++ Builder . По принципам двойной буфферизации у меня две картинки. На одной (невидимой игроку) все отрисовывается, и по таймеру отправляется на вторую (видимую), чтобы избежать мерцания. Понадобилось реализовать в игре коллизии. Все что пока пришло мне в голову это создать еще одну невидимую картинку на которой будут находится только черные контуры игровых предметов. Тогда я смогу проверять : если следующий пиксель на пути движущегося предмета - черный, значит нужно прекратить движение. Если я делаю правильно, подскажите пожалуйста, как лучше всего это реализовать. Если неправильно, подскажите пожалуйста другое решение.

Богам спешить некуда - у них впереди вечность.
jackbvДата: Понедельник, 24 Декабря 2012, 23:29 | Сообщение # 2
почетный гость
Сейчас нет на сайте
вопрос актуален?

Если да, то...

Вот мой код на Java, думаю не сложно будет его перевести на C++.
Будет работать если у вас предметы имеют параметры x, y - координаты, width, height - размеры. Предметы должны быть прямоугольными.

Функция находится в классе Entity, принимает как параметр другой объект Entity и проверяет коллизию.
Entity - класс предмета.

Код


      public boolean isCollision(Entity other) {
      
             if (other.getX() < getX() + getWidth() && other.getX() + other.getWidth() > getX() &&
                 other.getY() < getY() + getHeight() && other.getY() + other.getHeight() > getY()
                     ) { return true; }
          
         return false;
      
     }



- Java
- PHP, JavaScript
- HTML/CSS
DeadlySquare
Run or Die
Super SQUARE
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг