Создадим простой, но функциональный 2D платформер в Unity 5. Руководство описывает процесс разработки, занимающий минимум времени.
Начало работы: создание проекта
- Запустите Unity и создайте новый проект. Назовите его, например, «Платформер». Отключите опцию «Enable Unity Analytics». Сохраните проект в удобном месте.
- Расположите вкладки Unity (Hierarchy, Scene, Game, Project, Inspector) по своему усмотрению.
- Откройте Build Settings (File > Build Settings). Выберите целевую платформу – Android (для мобильных устройств). Нажмите «Switch Platform».
Подготовка сцены и ресурсов
- Создайте папку «Scenes» в папке «Project» для хранения сцен игры.
- Сохраните текущую сцену как «Main» в папке «Scenes» (File > Save Scene).
- Создайте папку «Sprites» для хранения спрайтов (картинок). Найдите или создайте спрайты игрока и платформы. Убедитесь, что у них тип Sprite. Переместите спрайты в папку «Sprites» в проекте Unity.
- Переместите спрайты игрока и платформы на сцену. Уменьшите размер спрайта игрока до 0.4 x 0.4. Установите размер камеры (Camera Size) на 8, а дальность видимости (Depth) на 100 единиц. Отрегулируйте позицию игрока и платформы.
Добавление коллайдеров и физики
- Добавьте компонент Box Collider 2D к спрайту платформы и отрегулируйте его размер, чтобы он точно соответствовал размеру платформы.
- Добавьте компонент Box Collider 2D к спрайту игрока. Уменьшите его размер, чтобы он точно соответствовал размеру игрока.
- Добавьте компонент Circle Collider 2D к спрайту игрока немного ниже Box Collider 2D. Это позволит игроку взбираться на наклонные поверхности.
- Добавьте компонент Rigidbody 2D к спрайту игрока. В настройках Rigidbody 2D установите Constraints – заморозьте вращение (Freeze Rotation). Установите Gravity Scale на 10.
- В Edit > Project Settings > Physics 2D установите значение гравитации Gravity на -30. Для более плавного движения установите Interpolation в настройках Rigidbody 2D на значение Interpolate.
Скрипт управления игроком
- Создайте папку «Scripts» в папке «Project».
- Создайте новый C# скрипт и назовите его «PlayerController».
- Добавьте в скрипт следующий код:
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float speed = 5f;
private Rigidbody2D rb;
private bool faceRight = true;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
float moveX = Input.GetAxis("Horizontal");
Vector2 movement = new Vector2(moveX * speed * Time.deltaTime, rb.velocity.y);
rb.velocity = movement;
if (moveX > 0 && !faceRight)
Flip();
else if (moveX < 0 && faceRight)
Flip();
}
void Flip()
{
faceRight = !faceRight;
transform.localScale = new Vector3(transform.localScale.x * -1, transform.localScale.y, transform.localScale.z);
}
void FixedUpdate()
{
if (Input.GetKeyDown(KeyCode.Space))
{
rb.AddForce(Vector2.up * 800f);
}
}
}
- Прикрепите скрипт PlayerController к спрайту игрока.
Камера, следующая за игроком
- Создайте новый C# скрипт и назовите его «CameraFollow».
- Добавьте в скрипт следующий код:
using UnityEngine;
public class CameraFollow : MonoBehaviour
{
public Transform player;
void Update()
{
transform.position = new Vector3(player.position.x, player.position.y, -10);
}
}
- Прикрепите скрипт CameraFollow к камере. В инспекторе камеры укажите объект игрока в поле player.
Создание префабов и уровня
- Создайте папку «Prefabs» в папке «Project».
- Перетащите платформу в папку «Prefabs», чтобы создать префаб.
- Создайте несколько копий префаба платформы и разместите их на сцене, чтобы сформировать уровень.
Точка респауна и триггер проигрыша
- Создайте пустой объект и назовите его «Respawn». Установите его координаты (0, 0.18, 0).
- Создайте куб (3D объект), назовите его «DeathTrigger» и добавьте к нему компонент Box Collider 2D. Сделайте его триггером. Расположите его под уровнем, чтобы он служил триггером проигрыша.
- Создайте новый C# скрипт и назовите его «DeathTriggerScript».
- Добавьте в скрипт следующий код:
using UnityEngine;
public class DeathTriggerScript : MonoBehaviour
{
public Transform respawnPoint;
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.CompareTag("Player"))
{
collision.transform.position = respawnPoint.position;
}
}
}
- Прикрепите скрипт DeathTriggerScript к объекту «DeathTrigger» и укажите объект «Respawn» в поле respawnPoint. Убедитесь, что игрок имеет тег «Player» в инспекторе.
Поздравляем! Вы создали свой первый 2D платформер в Unity 5! Этот простой пример демонстрирует базовые принципы создания 2D игр. Вы можете расширять и улучшать этот проект, добавляя новых врагов, уровни и другие функции.