62.91K
Category: programmingprogramming

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. Открываем CarMove
1. В 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. Открываем SitInTheCar
1. В 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. Точка выхода SpawnPosition
1. В 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
English     Русский Rules