Skapa ett minispel med C# i Unity

I den här handledningen går vi igenom processen att skapa ett minispel i Unity med C#. I slutet kommer du att ha en grundläggande förståelse för spelutveckling i Unity och kunna bygga vidare på den för att skapa mer komplexa spel.

Uppstart

Innan vi börjar, se till att du har Unity installerat och en grundläggande förståelse för C#-programmering. Skapa ett nytt Unity-projekt eller öppna ett befintligt där du vill bygga ditt minispel.

Konceptet för minispelet

Vårt minispel kommer att vara ett enkelt "Catch the Falling Objects"-spel. Spelaren styr en paddel längst ner på skärmen och försöker fånga fallande föremål med tangentbordsinmatning.

Implementeringssteg

Steg 1: Konfigurera scenen

  1. Skapa ett nytt 2D Unity-projekt eller använd ett befintligt.
  2. Skapa en 2D-sprite för spelarens paddla och fallande föremål.
  3. Skapa ett markobjekt och sätt upp en gräns för spelområdet.

Steg 2: Player Controller Script

Skapa ett C#-skript för att styra spelarens paddel. Bifoga det här skriptet till paddle 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);
    }
}

Steg 3: Generator för fallande föremål

Skapa ett skript för att generera fallande föremål slumpmässigt från toppen av skärmen. Bifoga det här skriptet till ett tomt GameObject eller hantera det i 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);
    }
}

Steg 4: Objektinsamling och poängsättning

Skapa ett skript för att hantera objektinsamling av spelarens paddel och uppdatera poängen. Fäst detta skript till de fallande föremålen.

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
        }
    }
}

Steg 5: Spelhanterare

Skapa ett GameManager-skript för att hantera spelstatus, poängsättning och game over-förhållanden.

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);
    }
}

Steg 6: UI Setup

Skapa UI-element som poängvisning, game over-skärm och omstartsknapp. Bifoga GameManager-metoderna till lämpliga UI-knappar för att starta om spelet.

Slutsats

Du har skapat ett enkelt minispel i Unity med C#. Denna grundläggande inställning kan utökas med ytterligare funktioner som power-ups, nivåer och mer komplex spelmekanik. Experimentera med olika idéer för att göra ditt minispel mer engagerande och roligare.