Создание мини-игры на C# в Unity

В этом уроке мы рассмотрим процесс создания мини-игры в Unity с использованием C#. К концу вы получите базовое понимание разработки игр в Unity и сможете использовать его для создания более сложных игр.

Настраивать

Прежде чем начать, убедитесь, что у вас установлен Unity и есть базовые знания программирования на C#. Создайте новый проект Unity или откройте существующий, в котором вы хотите создать свою мини-игру.

Концепция мини-игры

Наша мини-игра будет простой игрой "Catch the Falling Objects". Игрок управляет веслом в нижней части экрана и пытается поймать падающие предметы, используя ввод с клавиатуры.

Этапы внедрения

Шаг 1: Подготовка сцены

  1. Создайте новый 2D-проект Unity или используйте существующий.
  2. Создайте 2D-спрайт для ракетки игрока и падающих объектов.
  3. Создайте наземный объект и установите границу игровой зоны.

Шаг 2: Скрипт контроллера игрока

Создайте скрипт C# для управления ракеткой игрока. Прикрепите этот скрипт к GameObject ракетки.

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    public float speed = 5f; // Adjust speed as needed

    void Update()
    {
        float moveInput = Input.GetAxis("Horizontal");
        float moveAmount = moveInput * speed * Time.deltaTime;
        transform.Translate(Vector3.right * moveAmount);

        // Clamp player within screen boundaries
        float screenEdge = Camera.main.orthographicSize * Camera.main.aspect;
        float clampX = Mathf.Clamp(transform.position.x, -screenEdge, screenEdge);
        transform.position = new Vector3(clampX, transform.position.y, transform.position.z);
    }
}

Шаг 3: Генератор падающих предметов

Создайте скрипт для генерации падающих объектов случайным образом сверху экрана. Прикрепите этот скрипт к пустому GameObject или управляйте им в GameManager.

using UnityEngine;

public class ObjectGenerator : MonoBehaviour
{
    public GameObject objectPrefab;
    public float spawnInterval = 1f;
    public float spawnWidth = 4f;

    void Start()
    {
        InvokeRepeating("SpawnObject", 0f, spawnInterval);
    }

    void SpawnObject()
    {
        float randomX = Random.Range(-spawnWidth, spawnWidth);
        Vector3 spawnPosition = new Vector3(randomX, transform.position.y, transform.position.z);
        Instantiate(objectPrefab, spawnPosition, Quaternion.identity);
    }
}

Шаг 4: Сбор объектов и оценка

Создайте скрипт для обработки сбора объектов ракеткой игрока и обновления счета. Прикрепите этот скрипт к падающим объектам.

using UnityEngine;

public class ObjectCollector : MonoBehaviour
{
    void OnTriggerEnter2D(Collider2D other)
    {
        if (other.CompareTag("Player"))
        {
            // Handle scoring or game logic here
            Destroy(gameObject); // Destroy the collected object
        }
    }
}

Шаг 5: Менеджер игры

Создайте скрипт GameManager для управления состоянием игры, подсчетом очков и условиями окончания игры.

using UnityEngine;
using UnityEngine.SceneManagement;

public class GameManager : MonoBehaviour
{
    public GameObject gameOverUI;
    bool isGameOver = false;

    void Update()
    {
        if (!isGameOver && GameOverCondition())
        {
            GameOver();
        }
    }

    bool GameOverCondition()
    {
        // Define your game over condition here (e.g., time limit, lives lost)
        return false;
    }

    void GameOver()
    {
        isGameOver = true;
        gameOverUI.SetActive(true); // Display game over UI
        Time.timeScale = 0f; // Freeze game time
    }

    public void RestartGame()
    {
        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
    }
}

Шаг 6: Настройка пользовательского интерфейса

Создайте элементы пользовательского интерфейса, такие как отображение счета, экран окончания игры и кнопка перезапуска. Прикрепите методы GameManager к соответствующим кнопкам пользовательского интерфейса для перезапуска игры.

Заключение

Вы создали простую мини-игру в Unity с использованием C#. Эту базовую настройку можно расширить дополнительными функциями, такими как бонусы, уровни и более сложная игровая механика. Экспериментируйте с различными идеями, чтобы сделать вашу мини-игру более увлекательной и приятной.