Lage et minispill med C# i Unity

I denne opplæringen går vi gjennom prosessen med å lage et minispill i Unity ved å bruke C#. Mot slutten vil du ha en grunnleggende forståelse av spillutvikling i Unity og kunne bygge videre på det for å lage mer komplekse spill.

Oppsett

Før vi begynner, sørg for at du har Unity installert og en grunnleggende forståelse av C#-programmering. Lag et nytt Unity-prosjekt eller åpne et eksisterende der du vil bygge minispillet ditt.

Konseptet med minispillet

Minispillet vårt vil være et enkelt "Catch the Falling Objects"-spill. Spilleren kontrollerer en padleåre nederst på skjermen og prøver å fange fallende gjenstander ved hjelp av tastaturinndata.

Implementeringstrinn

Trinn 1: Sette opp scenen

  1. Opprett et nytt 2D Unity-prosjekt eller bruk et eksisterende.
  2. Lag en 2D-sprite for spillerens padleåre og fallende gjenstander.
  3. Lag et bakkeobjekt og sett opp en grense for spillområdet.

Trinn 2: Player Controller Script

Lag et C#-skript for å kontrollere spillerens padle. Fest dette skriptet til padle 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);
    }
}

Trinn 3: Generator for fallende gjenstander

Lag et skript for å generere fallende objekter tilfeldig fra toppen av skjermen. Fest dette skriptet til et tomt GameObject eller administrer 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);
    }
}

Trinn 4: Objektinnsamling og poengsum

Lag et skript for å håndtere objektinnsamling med spillerens padleåre og oppdater poengsummen. Fest dette skriptet til de fallende objektene.

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

Trinn 5: Spillbehandling

Lag et GameManager-skript for å administrere spillstatus, scoring og game over-forhold.

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

Trinn 6: UI-oppsett

Lag brukergrensesnittelementer som poengvisning, spill over skjerm og omstart-knapp. Fest GameManager-metodene til de aktuelle UI-knappene for å starte spillet på nytt.

Konklusjon

Du har laget et enkelt minispill i Unity ved å bruke C#. Dette grunnleggende oppsettet kan utvides med tilleggsfunksjoner som power-ups, nivåer og mer kompleks spillmekanikk. Eksperimenter med forskjellige ideer for å gjøre minispillet ditt mer engasjerende og morsomt.