Основная механика: использование условий для определения времени игрока и вознаграждения за него.
Предстоящие игры и/или игровые механики из этой серии
Настройтесь на утро четверга для новой записи в этой серии. Буду рад прочитать ваши предложения в комментариях.
- Выбор персонажа в штаб-квартире рейда [четверг, 23 июня]
- Бесконечный бегун [четверг, 30 июня]
- Guitar Hero [четверг, 7 июля]
- Карточный матч [четверг, 14 июля]
- Змея [четверг, 21 июля]
- Ловец падающего мяча [четверг, 28 июля]
- Аркадный джойстик [четверг, 4 августа]
- Раздвижные блоки [четверг, 11 августа]
- Вертикальный платформер [четверг, 18 августа]
- Понг [четверг, 25 августа]
- Буря [четверг, 1 сентября]
Ссылка на проект Framer
Основная механика игрового процесса в большинстве игр-симуляторов ритма заключается в нажатии кнопки именно в тот момент, когда движущаяся фигура полностью помещается в неподвижную целевую область на игровом поле. Давайте начнем!
Настройка игрового окружения
Этот прототип содержит следующие элементы (также известные как слои):
- Правила: привязка к верхней части экрана
- Оценка: слой масштабирования зафиксирован справа на экране. Масштабируется по вертикали от 0 до 1 с повторяющейся переменной.
- Кнопка: закреплена внизу экрана, поэтому ее легко нажимать.
- Целевая область: заблокирована в верхней части кнопки рядом с нижней частью экрана, чтобы дать достаточно времени для того, чтобы заметки встали на свои места.
- Примечания: группа из 3 примечаний, выровненных по горизонтали, одновременно отображается только 1 примечание.
- Экран завершения игры: скрыт до тех пор, пока игрок не выиграет игру.
Удаление заметок
Создается родительский слой, примечания, который соответствует ширине и высоте экрана.
Каждую секунду:
- переменная «правильно» установлена на некоторое число от 0 до 2
- Цикл выполняется трижды, в конечном итоге создавая три равноудаленные ноты, выровненные по горизонтали; один из трех видим и получил имя «нео», остальные невидимы; к каждой заметке прикреплена анимация, которая перемещает их сверху вниз экрана; каждая нота уничтожается, когда анимация заканчивается
notes = new Layer width: Screen.width height: Screen.height backgroundColor: “transparent” Utils.interval 1, -> correct = Utils.round Utils.randomNumber(0,2) for i in [0…3] note = new Layer parent: notes x: Align.center(200 * -(i — 1)) y: Align.top(100) width: 150 height: 50 backgroundColor: “transparent” if i == correct note.backgroundColor = “white” note.name = “neo” drop = new Animation layer: note properties: y: Align.bottom(50) curve: “linear” time: 1 drop.start() note.onAnimationEnd -> this.destroy()
Нажал ли игрок кнопку в нужное время?
Когда игрок нажимает кнопку:
- Если первый дочерний элемент в «примечаниях» (поскольку все три дочерних элемента остаются на одной высоте при опускании, не имеет значения, какой из них мы используем для сравнения) находится точно в середине целевой области: увеличьте оценку, увеличьте масштаб метр и указать успешное касание, переключив состояние целевой области
- В противном случае (это означает, что заметки не идеально выровнены в целевой области): укажите неудачное касание, переключив состояние целевой области.
button.on Events.Tap, -> if notes.children[0].midY > bar.minY && notes.children[0].midY < bar.maxY points += 1 meter.scaleY = points / 10 bar.states.switchInstant “success” bar.states.switch “default” else bar.states.switchInstant “wrong” bar.states.switch “default”
Победа в игре
Экран завершения игры запускается только тогда, когда счетчик, показывающий счет, возвращается к шкале Y, равной 1, из исходного состояния 0 (каждая точка увеличивает его на 1/10).
meter.on “change:scaleY”, -> if @.scaleY == 1 gameOver.visible = yes
Механика Framer/CoffeeScript выделена здесь
- Слушатели событий
- Состояния слоя
- Глобальные переменные
- Вспомогательные методы
- Поток управления
- Петли