Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Unity_в_действии_Джозеф_Хокинг_Рус.pdf
Скачиваний:
82
Добавлен:
21.06.2022
Размер:
26.33 Mб
Скачать

2.6. Заключение      63

ходить по комнате. Несмотря на наличие переменной gravity, вы легко можете заставить игрока летать, введя в поле Gravity на панели Inspector значение 0.

Листинг 2.13. Готовый сценарий FPSInput

using UnityEngine;

using System.Collections;

[RequireComponent(typeof(CharacterController))] [AddComponentMenu("Control Script/FPS Input")] public class FPSInput : MonoBehaviour {

public float speed = 6.0f; public float gravity = -9.8f;

private CharacterController _charController;

void Start() {

_charController = GetComponent<CharacterController>();

}

void Update() {

float deltaX = Input.GetAxis("Horizontal") * speed; float deltaZ = Input.GetAxis("Vertical") * speed; Vector3 movement = new Vector3(deltaX, 0, deltaZ); movement = Vector3.ClampMagnitude(movement, speed);

movement.y = gravity;

movement *= Time.deltaTime;

movement = transform.TransformDirection(movement); _charController.Move(movement);

}

}

Поздравляю вас с созданием 3D-проекта! В этой главе вы получили большое количество новой информации и теперь знаете, как создать код перемещения в Unity. Но как бы ни радовал нас первый демонстрационный ролик, до готовой игры ему еще очень далеко. В плане проекта этот пункт описан как создание базовой сцены в шутере от первого лица, но какой же это шутер, если мы лишены возможности стрелять? Поэтому похвалите себя за успешно завершенный фрагмент проекта и готовьтесь к следующему шагу.

2.6. Заключение

Трехмерное координатное пространство определяется осями X, Y и Z.Сцену создают помещенные в комнату объекты и источники света.Игрока в сцене от первого лица, по сути, представляет камера.

Код движения в каждом кадре циклически повторяет небольшие преобразования.

Элементы управления персонажем в игре от первого лица состоят из указателя мыши, отвечающего за вращение, и клавиатуры, отвечающей за перемещения.

3

Добавляем в игру врагов

и снаряды

33 Как игрок и его враги получают возможность целиться и стрелять 33 Попадания и реакция на них 33 Заставляем врагов перемещаться

33 Порождение новых объектов сцены

Ролик, демонстрирующий перемещения объекта, который вы создали в предыдущей главе, выглядит здорово, но до полноценной игры ему далеко. Давайте попробуем превратить его в шутер от первого лица. Для этого нам не хватает возможности стрелять, а также врагов, которых требуется поразить. Начнем мы с написания сценариев, превращающих нашего игрока в стрелка. После этого мы заполним сцену врагами, добавив в числе прочего код, позволяющий бесцельно перемещаться по сцене и реагировать на попадание. В заключение мы дадим врагам возможность отстреливаться, кидая в игрока огненные шары. Написанные в главе 2 сценарии при этом редактироваться не будут; мы просто добавим в проект новые сценарии с дополнительными функциональными возможностями.

Я выбрал для этого проекта шутер от первого лица по двум причинам. Во-первых, подобные игры популярны, ведь людям нравится стрелять. Во-вторых, я учел набор приемов, с которыми вы можете ознакомиться в процессе работы. Создание такой игры дает возможность изучить несколько фундаментальных концепций трехмерного моделирования. Например, вы узнаете, что такое бросание луча (raycasting). Подробно особенности этого приема я объясню чуть позже, а пока достаточно информации о том, что он позволяет решать множество различных задач в трехмерном моделировании и применяется во множестве ситуаций, из которых интуитивно наиболее понятной является реализация стрельбы.

Создание блуждающих целей, которые требуется поразить, дает нам замечательный повод исследовать код контролируемых компьютером персонажей, а также техники