Рисование с физикой на HaxeFlixel

haxeflixelЯ люблю собирать прототипы и пробывать разные варианты управления для устройств с touch экраном. Это постоянный поиск чего-то более нативного и привычного, чем джойстик отрисованный поверх геймплея.

Один из таких вариантов — рисование. Но что бы было интереснее я покажу пример рисования с физикой.

Опишу в двух словах, как мы будем это делать:

  1. Создаем спрайт размером с экран и заполняем его прозрачностью.
  2. Добавляем к нему пустое физическое тело, в которое потом будем добавлять shape созданные по мотивам нашего рисования
  3. Ловим в update событие нажатия мыши и записываем координаты нажатия стартовой точки
  4. Каждый последующий вызов update, если мышь все еще нажата (или палец все еще на экране) считаем расстояние от нашей стартовой точки, до текущей и ждем пока эта величина не станет больше минимально допустимого значения.
  5. Создаем shape прямоугольной формы с шириной равной отрисованному расстоянию, а высотой 1
  6. Считаем угол, на который нужно повернуть shape, что бы он был вдоль отрисованной линии и перемещаем тело в координаты стартовой точки
  7. Добавляем  shape к физическому телу созданному в пункте 2.
  8. Записываем текущие координаты, как координаты стартовой точки

За отрисовку отвечает  FlxSpriteUtil и там все просто. Поэтому перейдем к коду:

А вот apk для желающих посмотреть на своем Android: Скачать

Это не самый производительный способ. Но с поставленной задачей справляется на ура.

В скором будущем постараюсь рассказать, как рисовать с физикой в Unity.  А так же  про более хитрую и производительную рисовалку на haxeflixel, для более динамичных игр и с зоной рисования не ограниченной одним экраном.