Создание игры об охоте в Unity
В этом уроке мы рассмотрим процесс создания базовой игры-охоты в Unity. Эта игра будет включать такие элементы, как движение игрока, искусственный интеллект животных, механика стрельбы и система подсчета очков. Мы рассмотрим:
- Настройка проекта и среды
- Создание элементов управления проигрывателем
- Внедрение искусственного интеллекта животных
- Добавление механики стрельбы
- Создание системы подсчета очков
Настройка проекта
Начнем с создания нового проекта Unity и среды.
Создание проекта
- Откройте Unity и создайте новый 3D-проект.
- Назовите свой проект
HuntingGame
и нажмитеСоздать
. - В окне проекта создайте папки с именами
Scripts
,Prefabs
иMaterials
для организации ваших ресурсов.
Настройка окружающей среды
- В иерархии щелкните правой кнопкой мыши и выберите
3D-объект > Рельеф
, чтобы создать рельеф. - Настройте ландшафт, используя
Инструменты ландшафта
, чтобы рисовать текстуры, добавлять деревья и размещать траву или другие детали. - Добавьте несколько 3D-объектов, таких как камни и деревья, чтобы сделать окружающую среду более реалистичной.
Создание элементов управления проигрывателем
Далее мы создадим персонажа игрока и реализуем управление движением на основе физики.
Персонаж игрока
- В иерархии щелкните правой кнопкой мыши и выберите
3D Object > Capsule
, чтобы создать персонажа игрока. - Переименуйте капсулу в
Player
и расположите ее над ландшафтом. - Добавьте компонент
Rigidbody
к объектуPlayer
для движения на основе физики. - Добавьте
Camera
в качестве дочернего объектаPlayer
, который будет служить точкой обзора игрока.
Скрипт движения игрока
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
public float moveSpeed = 5f;
public float rotationSpeed = 100f;
private Rigidbody rb;
void Start()
{
rb = GetComponent();
rb.freezeRotation = true;
}
void FixedUpdate()
{
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
Vector3 movement = transform.forward * moveVertical * moveSpeed * Time.deltaTime;
rb.MovePosition(rb.position + movement);
float rotation = Input.GetAxis("Mouse X") * rotationSpeed * Time.deltaTime;
Quaternion turnRotation = Quaternion.Euler(0f, rotation, 0f);
rb.MoveRotation(rb.rotation * turnRotation);
}
}
- Создайте новый скрипт C# с именем
PlayerMovement.cs
в папкеScripts
. - Присоедините скрипт
PlayerMovement
к объектуPlayer
.
Внедрение искусственного интеллекта животных
Мы создадим простой искусственный интеллект животных, который будет перемещаться по окружающей среде и реагировать на игрока.
Префаб животных
- Импортируйте или создайте 3D-модель животного (например, оленя).
- Перетащите модель на сцену и разместите ее на местности.
- Щелкните правой кнопкой мыши модель в Иерархии и выберите
Создать пустой
, чтобы создать родительский объект. Назовите егоОлень
. - Перетащите 3D-модель в объект
Deer
и сбросьте ее преобразование. - Сохраните объект
Deer
как префаб, перетащив его в папкуPrefabs
.
Скрипт искусственного интеллекта животных
using UnityEngine;
using UnityEngine.AI;
public class AnimalAI : MonoBehaviour
{
public Transform[] waypoints;
private NavMeshAgent agent;
private int currentWaypoint = 0;
void Start()
{
agent = GetComponent();
agent.SetDestination(waypoints[currentWaypoint].position);
}
void Update()
{
if (agent.remainingDistance < agent.stoppingDistance)
{
currentWaypoint = (currentWaypoint + 1) % waypoints.Length;
agent.SetDestination(waypoints[currentWaypoint].position);
}
}
}
- Создайте новый скрипт C# с именем
AnimalAI.cs
в папкеScripts
. - Присоедините скрипт
AnimalAI
к префабуDeer
. - Добавьте компонент
NavMeshAgent
к префабуDeer
. - Настройте точки маршрута на сцене, создав пустые GameObjects и разместив их по желанию. Назначьте эти точки маршрута массиву
waypoints
в скриптеAnimalAI
.
Добавление механики стрельбы
Мы реализуем возможность игрока стрелять в животных.
Сценарий съемки
using UnityEngine;
public class PlayerShooting : MonoBehaviour
{
public Camera playerCamera;
public float range = 100f;
public GameObject impactEffect;
void Update()
{
if (Input.GetButtonDown("Fire1"))
{
Shoot();
}
}
void Shoot()
{
RaycastHit hit;
if (Physics.Raycast(playerCamera.transform.position, playerCamera.transform.forward, out hit, range))
{
AnimalAI animal = hit.transform.GetComponent();
if (animal != null)
{
Destroy(hit.transform.gameObject);
}
GameObject impactGO = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal));
Destroy(impactGO, 2f);
}
}
}
- Создайте новый скрипт C# с именем
PlayerShooting.cs
в папкеScripts
. - Присоедините скрипт
PlayerShooting
к объектуPlayer
. - Создайте эффект удара (например, систему частиц) и назначьте его полю
impactEffect
в скрипте.
Настройка системы подсчета очков
Мы добавим простую систему подсчета очков для отслеживания успешных охот игрока.
Скрипт менеджера очков
using UnityEngine;
using UnityEngine.UI;
public class ScoreManager : MonoBehaviour
{
public static int score = 0;
public Text scoreText;
void Update()
{
scoreText.text = "Score: " + score.ToString();
}
public static void AddScore(int points)
{
score += points;
}
}
- Создайте новый скрипт C# с именем
ScoreManager.cs
в папкеScripts
. - Присоедините скрипт
ScoreManager
к новому пустому игровому объекту с именемGameManager
. - Создайте текстовый элемент пользовательского интерфейса для отображения счета и назначьте его полю
scoreText
в скриптеScoreManager
.
Обновление сценария стрельбы для отслеживания очков
void Shoot()
{
RaycastHit hit;
if (Physics.Raycast(playerCamera.transform.position, playerCamera.transform.forward, out hit, range))
{
AnimalAI animal = hit.transform.GetComponent();
if (animal != null)
{
Destroy(hit.transform.gameObject);
ScoreManager.AddScore(10);
}
GameObject impactGO = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal));
Destroy(impactGO, 2f);
}
}
Заключение
Мы создали базовую игру-охоту в Unity. Мы настроили проект и среду, создали элементы управления игроком с физическим движением, внедрили искусственный интеллект животных, добавили механику стрельбы и настроили систему подсчета очков. Эти фундаментальные знания можно расширить, включив более сложное поведение, дополнительных животных и усовершенствованную игровую механику, чтобы улучшить вашу игру-охоту.