Похожие презентации:
L08_Презентация
1.
Создание триггера. Движение машиныПродолжаем сцену с персонажем.
Сегодня машина будет ездить, а персонаж — садиться в неё и
выходить.
1
2.
1. Открываем сцену1. Откройте Assets → Scenes → Student_Car.
2. Нажмите Play: персонаж ходит на WASD.
3. Остановите Play.
4. В Hierarchy найдите Car → Body. Body — красный куб.
2
3.
Как поменять цвет объекта1. Внизу в Project откройте Assets → Materials.
2. Выберите Car, Player или Ground.
3. В Inspector нажмите на цвет рядом с Albedo (или Base Color / Base Map).
4. Выберите другой цвет. Изменение сразу появится на сцене.
Ground — земля
Player — персонаж
Car — машина
3
4.
2. Открываем CarMove1. В Assets → Scripts откройте CarMove.cs.
2. Найдите Update(). Это метод, который выполняется каждый кадр.
3. Пишем код внутри его фигурных скобок.
private void Update()
{
}
4
5.
3. Скорость машиныspeed — скорость движения, rotationSpeed — скорость поворота.
Обе настройки видны в Inspector у Car.
public float speed = 8f;
public float rotationSpeed = 90f;
5
6.
4. Получаем WASDВнутри Update() напишите две строки.
float forward = CarKeys.Vertical;
float turn = CarKeys.Horizontal;
CarKeys считывает W/S и A/D. Этот готовый вспомогательный файл не меняем.
6
7.
5. Машина движетсяПосле строк forward и turn добавьте:
transform.Translate(Vector3.forward * forward
* speed * Time.deltaTime, Space.Self);
7
8.
6. Машина поворачиваетПосле Translate добавьте проверку.
Машина поворачивает при движении.
if (Mathf.Abs(forward) > 0.01f)
{
transform.Rotate(0f, turn * rotationSpeed
* Mathf.Sign(forward) * Time.deltaTime, 0f);
}
8
9.
7. Проверяем движение1. Сохраните код: Ctrl + S. Дождитесь компиляции.
2. В Player временно выключите PlayerMove.
3. На Car включите CarMove и нажмите Play.
4. Проверьте WASD, затем остановите Play.
5. Включите PlayerMove и выключите CarMove.
Галочка должна быть выключена перед дальнейшим заданием.
9
10.
8. Создаём триггер1. Выделите Car (не Body).
2. Inspector → Add Component → Box Collider.
3. Включите Is Trigger.
4. Size: X = 5, Y = 2.5, Z = 6.
5. Body — красный куб внутри Car. Его не изменяйте.
10
11.
9. Для чего нужен Trigger?Невидимая область вокруг машины.
Когда Player оказывается в ней — разрешаем нажать F.
Вдали от машины нажатие F ничего не делает.
11
12.
10. Открываем SitInTheCar1. В Scripts откройте SitInTheCar.cs.
2. Найдите OnTriggerEnter и OnTriggerExit.
3. Вставьте строки в эти методы.
private void OnTriggerEnter(Collider other)
{
if (other.gameObject == player) playerNear = true;
}
private void OnTriggerExit(Collider other)
{
if (other.gameObject == player) playerNear = false;
}
12
13.
11. Нажимаем F рядом с машинойВ SitInTheCar.cs найдите Update().
Впишите проверку и переключение камер.
if (!playerNear || inTheCar || !CarKeys.FPressed) return;
player.SetActive(false);
playerCamera.SetActive(false);
carCamera.SetActive(true);
carMove.enabled = true;
13
14.
12. Запоминаем посадкуПосле carMove.enabled = true; добавьте ещё три строки.
inTheCar = true;
enteredFrame = Time.frameCount;
playerNear = false;
Запоминаем кадр нажатия F, чтобы не выйти из машины в тот же кадр.
14
15.
13. Точка выхода SpawnPosition1. В Hierarchy нажмите правой кнопкой на Car → Create Empty.
2. Назовите объект SpawnPosition.
3. Установите Local Position: X = 3, Y = 0.5, Z = 0.
4. Пустой объект должен быть дочерним у Car.
15
16.
14. Открываем GetOutTheCarВ Assets → Scripts откройте GetOutTheCar.cs.
В начале Update() напишите:
if (!sitInTheCar.inTheCar ||
Time.frameCount == sitInTheCar.enteredFrame) return;
if (!CarKeys.FPressed) return;
16
17.
15. Возвращаем PlayerНиже в GetOutTheCar.cs добавьте:
CharacterController controller =
player.GetComponent<CharacterController>();
if (controller != null) controller.enabled = false;
player.transform.position = spawnPosition.position;
player.transform.rotation = spawnPosition.rotation;
if (controller != null) controller.enabled = true;
player.SetActive(true);
17
18.
16. Выключаем машинуВ самом конце GetOutTheCar.Update() добавьте:
carMove.enabled = false;
carCamera.SetActive(false);
playerCamera.SetActive(true);
sitInTheCar.inTheCar = false;
18
19.
17. Проверяем ссылки у CarВ Inspector выберите Car и найдите два скрипта.
SitInTheCar: Player, PlayerCamera, CarCamera, CarMove.
GetOutTheCar: Player, PlayerCamera, CarCamera, CarMove, SitInTheCar.
В GetOutTheCar поле Spawn Position: перетащите SpawnPosition.
Поля None оставлять нельзя.
19
20.
18. Проверяем камерыВ Hierarchy уже есть PlayerCamera и CarCamera.
PlayerCamera включена, CarCamera выключена.
На обеих стоит CameraFollow с правильным Target.
На каждой камере есть Audio Listener, но активна только одна камера.
20
21.
19. Проверяем игру1. Сохраните код и сцену: Ctrl + S.
2. Нажмите Play, щёлкните окно Game.
3. WASD — подойдите к машине.
4. F — сядьте. WASD — поезжайте.
5. F — выйдите сбоку от машины.
21
22.
20. Самостоятельно1. Попробуйте скорость машины 5, потом 12.
2. Измените скорость поворота.
3. Проверьте: работает ли F вдали от машины?
4. Верните скорость 8 и сохраните сцену.
5. Поменяйте цвет машины через Materials → Car.
22
Программирование