Часть 3. Взаимодействие персонажа с блоками | В паутине

Часть 3. Взаимодействие персонажа с блоками

Вольный перевод статьи How to Create a Platform Game in AS3 – Part 3 Часть комментариев (особенно по математическим расчетам) — моя.

Мы уже разместили все блоки на сцене, придерживаясь схемы, теперь мы можем добавить им некоторую функциональность. Прежде всего, блоки должны быть единственной поверхностью, на которой может стоять наш герой. Чтобы добиться этого, нам необходимо отредактировать функцию mainJump().
Замените этот кусок кода:

На этот:

Отлично, теперь наш персонаж падает вниз, если не находится на блоке. Давайте определим переменную mainOnGround булева типа и присвоим ей по умолчанию значение false.
(Данный код лучше добавить наверх, к другим определениям переменных).
Затем присвоим ей значение true, если персонаж находится на блоке. (Необходимо внести исправления в функцию mainJump() – прим.). Я надеюсь, вы справитесь с этой задачей.
Теперь добавим следующий код в функцию moveChar():

Следует продумать еще одну вещь. Если персонаж касается блока снизу, он должен отскакивать от него. Иначе он проскочит блок насквозь и окажется сверху, а этого мы никак не можем допустить. Чтобы сделать это, необходимо отредактировать цикл for внутри функции mainJump(). Вот так выглядит окончательный на данный момент код:

Если вы сейчас запустите наш платформер, то увидите, что герой отскакивает, когда натыкается снизу на блок.
Еще одна задача, которую мы должны решить, — это движение окружающего героя мира, если он отходит слишком далеко влево или вправо. Давайте изменим нашу схему уровня:

С этого момента наш мир перестал вмещаться в пределы сцены. Теперь необходимо отредактировать функцию createLvl и привязать центр сцены к персонажу. Измененный код:

Мне очень нравится наш код. Теперь экран отцентрован относительно персонажа на любом уровне, независимо от того, где вы его поместите. Теперь было бы неплохо сделать так, чтобы текущий фон двигался вместо нашего героя, когда он движется, чтобы мы могли все время его видеть. Это очень просто. В функции moveChar() изменим этот фрагмент:

Очень просто и изящно, не правда ли? И осталась только одна проблема, которую хотелось бы решить до конца этого урока. Наш персонаж прыгает недостаточно высоко. Чтобы исправить это, немного изменим функцию mainJump():
Исходный фрагмент:

А еще можно изменить jumpSpeedLimit, например, на 20. Итак, мы написали достаточно сложный блок кода. На следующем уроке мы добавим в наш уровень несколько модификаций, например, лестницы и трамплины. Также мы сможем останавливать персонажа, если он столкнется со стеной.

Все уроки руководства

1. Создание главного персонажа
2. Создание уровня
3. Взаимодействие персонажа с блоками
4. Добавление элементов уровня
5. Добавление врагов
6. Завершение уровня
7. Последние штрихи

Комментарии (0)

Ваш email не будет опубликован. Все поля обязательны