Создание 2D платформера в Unity
Шаг 1: Установка Unity
1. Скачайте Unity Hub: Установите последнюю версию Unity Hub с официального сайта Unity.
2. Создайте новый проект: Запустите Unity Hub, выберите "New Project", выберите "2D" и задайте имя вашему проекту (например, "My2DPlatformer").
Шаг 2: Создание сцены
1. Откройте новую сцену: Unity открывает новую сцену автоматически. Если нет, создайте новую через `File -> New Scene`.
2. Добавьте Tilemap для платформ:
- Правый клик в разделе `Hierarchy`, выберите `2D Object -> Tilemap -> Rectangular`.
- Убедитесь, что у вас установлен `Grid`.
Шаг 3: Импорт ресурсов
1. Добавьте спрайты: Найдите и импортируйте спрайты для персонажа и платформ. Вы можете использовать бесплатные ресурсы с сайтов, таких как Itch.io или OpenGameArt.org.
2. Импортируйте спрайты в Unity: Просто перетащите изображения в `Assets`.
Шаг 4: Создание игрового персонажа
1. Создайте игровой объект:
- Правый клик в `Hierarchy`, выберите `Create Empty`, назовите его "Player".
- Добавьте компонент `Sprite Renderer` и выберите спрайт вашего персонажа.
2. Добавьте компоненты:
- Добавьте `Rigidbody2D` (чтобы персонаж реагировал на физику).
- Добавьте `Box Collider 2D` для обработки столкновений.
Шаг 5: Написание скрипта управления персонажем
1. Создайте скрипт:
- В `Assets` создайте папку `Scripts`, затем правый клик в папке, выберите `Create -> C# Script`, назовите его "PlayerMovement".
2. Откройте скрипт и напишите код:
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
public float moveSpeed = 5f;
public float jumpForce = 10f;
private Rigidbody2D rb;
private bool isGrounded;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
Move();
Jump();
}
void Move()
{
float moveInput = Input.GetAxis("Horizontal");
rb.velocity = new Vector2(moveInput * moveSpeed, rb.velocity.y);
}
void Jump()
{
if (isGrounded && Input.GetButtonDown("Jump"))
{
rb.velocity = Vector2.up * jumpForce;
}
}
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Ground"))
{
isGrounded = true;
}
}
private void OnCollisionExit2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Ground"))
{
isGrounded = false;
}
}
}
3. Примените скрипт к персонажу: Перетащите `PlayerMovement` в объект "Player" в `Hierarchy`.
Шаг 6: Создание платформ
1. Создайте платформы:
- Создайте новый `GameObject`, назовите его "Ground".
- Добавьте `Sprite Renderer` и выберите спрайт платформы.
- Добавьте `Box Collider 2D`.
- Задайте тег "Ground" (т. к. мы используем его в коде).
2. Разместите платформы: Скопируйте и переместите "Ground" для создания уровня.
Шаг 7: Настройка камеры
1. Добавьте компонент Cinemachine:
- В `Window` -> `Package Manager`, найдите Cinemachine и установите его.
- Создайте новый виртуальный камеру через `Cinemachine -> Create 2D Camera`.
- Установите игрока как целевой объект камеры в свойствах виртуальной камеры.
Шаг 8: Добавление врагов
1. Создайте врага:
- Создайте новый объект, добавьте спрайт врага, `Rigidbody2D` и `Box Collider 2D`.
- Напишите простой AI скрипт для перемещения врага.
Пример простого движения врага:
using UnityEngine;
public class EnemyMovement : MonoBehaviour
{
public float moveSpeed = 3f;
private bool movingRight = true;
void Update()
{
if (movingRight)
{
transform.Translate(Vector2.right * moveSpeed * Time.deltaTime);
}
else
{
transform.Translate(Vector2.left * moveSpeed * Time.deltaTime);
}
}
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.CompareTag("Wall"))
{
movingRight = !movingRight;
}
}
}
2. Добавьте тег для стен: Назначьте тег на стены, чтобы враги могли отражаться от них.
Шаг 9: Тестирование
Запускайте игру и отлаживайте, исправляя возникающие ошибки. Проверьте, что персонаж может двигаться и прыгать, а враги ведут себя так, как ожидается.
Шаг 10: Оптимизация и публикация
После завершения разработки тестируйте производительность и оптимизируйте графику. Unity предлагает различные способы сборки для разных платформ, так что выберите нужную и следуйте инструкциям.
Эти шаги помогут вам создать базовый 2D платформер в Unity. Не стесняйтесь экспериментировать с механиками, добавлять новые элементы и улучшать игру!
| VK | TG | OK |