Движущиеся платформы
Часть раздела Создание настоящих игр путешествия по Unity на Coddy. Урок 49 из 56.
Задание
СреднеСиняя платформа должна плавно двигаться взад и вперёд над пропастью. Сохраните всё из предыдущего урока.
Заполните MovingPlatform:
- Два поля, задаваемых в Inspector:
distance(3) иspeed(1.5), а такжеpublic Vector3 delta. - Платформа плавно движется от начальной позиции на
distanceединиц вдоль +x со скоростьюspeedединиц в секунду, затем возвращается в начальную позицию и так далее бесконечно. - Каждый кадр
deltaпоказывает, насколько платформа переместилась за этот кадр: её позиция после перемещения минус позиция до него.
CharacterController не переносится вместе с поверхностью, на которой стоит: на движущейся платформе он остаётся на месте, а платформа выезжает из-под него. Не поможет и перемещение её transform.position: следующий вызов Move контроллера начинается с позиции, в которой его в последний раз видела физика, и отменяет это изменение. Сделайте так, чтобы Player перемещался вместе с платформой:
- Добавьте
OnControllerColliderHit. Когда нормаль столкновения направлена вверх (hit.normal.yбольше 0.5: игрок стоит на поверхности) и у объекта естьMovingPlatform, сохраните эту платформу в поле. - В
Updateдобавьтеdeltaэтой платформы к перемещению, передаваемому вcontroller.Move, а затем забудьте о платформе (установите в поле значениеnull). ВызовMoveснова найдёт её, пока игрок стоит на ней.
Нажмите Play, запрыгните на платформу и прокатитесь на ней, затем нажмите Check.
Попробуйте сами
using UnityEngine;
public class MovingPlatform : MonoBehaviour
{
// В одном из следующих уроков мы добавим сюда код платформы, которая плавно движется туда-сюда.
}
Все уроки раздела Создание настоящих игр
1Текст на экране
Холст и текстПокажем счётФорматирование чиселТаймер обратного отсчётаПовторение: спидометр4Сцены и уровни
Загрузить сценуПерезапустить уровеньСледующий уровеньСохранить между сценамиПовторение: выбор уровня7Управление временем
Пауза с timeScaleЗамедленное движениеНемасштабируемое времяПовторение: Bullet Time10Проект: 3D-платформер
ТрассаДвижущиеся платформы2Кнопки и экраны
Кнопки и onClickЛямбдыСвязи в InspectorВключение и выключение панелейШкалы здоровьяПовторение: магазин улучшений5Сохранение с помощью PlayerPrefs
Сохранение числаЗагрузка со значением по умолчаниюРекордСохранение настроекПовторение: монеты в банке