2D-Münzensammeln in Unity

Das Sammeln und Sammeln von Münzen ist in 2D-Spielen zu einem festen Bestandteil geworden, insbesondere in 2D-Plattformspielen.

Um in Unity eine Münze aufzunehmen, müssen wir ein Skript erstellen, das an ein Münze-Objekt angehängt wird und zerstört wird, sobald der Spieler damit in Kontakt kommt. Aktualisieren des Zählerwerts.

Sharp Coder Videoplayer

Ich werde den 2D-Charakter-Controller verwenden, aber Sie können diesen Teil überspringen, wenn Sie bereits einen 2D-Controller haben.

Schritte

Um eine 2D-Münze herzustellen, die aufgenommen und eingesammelt werden kann, führen Sie die folgenden Schritte aus:

  • Erstellen Sie ein neues GameObject (GameObject -> Create Empty) und benennen Sie es "Coin"
  • Hängen Sie eine SpriteRenderer-Komponente an das "Coin"-Objekt an
  • Weisen Sie Ihr Münz-Sprite dem SpriteRenderer zu (Sie können das Bild unten verwenden. Stellen Sie sicher, dass der Texturtyp in den Importeinstellungen auf 'Sprite (2D and UI)' eingestellt ist.)

Transparentes Bild der Goldmünze

  • Skalieren Sie das Münzobjekt auf die gewünschte Größe
  • Ändern Sie die Achsenposition der Münze 'Z' so, dass sie mit der Position des Spielers übereinstimmt
  • Hängen Sie eine BoxCollider2D-Komponente an das "Coin"-Objekt an
  • Erstellen ein neues Skript, nennen Sie es "SC_2DCoin", entfernen Sie alles daraus und fügen Sie dann den folgenden Code ein:

SC_2DCoin.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SC_2DCoin : MonoBehaviour
{
    //Keep track of total picked coins (Since the value is static, it can be accessed at "SC_2DCoin.totalCoins" from any script)
    public static int totalCoins = 0; 

    void Awake()
    {
        //Make Collider2D as trigger 
        GetComponent<Collider2D>().isTrigger = true;
    }

    void OnTriggerEnter2D(Collider2D c2d)
    {
        //Destroy the coin if Object tagged Player comes in contact with it
        if (c2d.CompareTag("Player"))
        {
            //Add coin to counter
            totalCoins++;
            //Test: Print total number of coins
            Debug.Log("You currently have " + SC_2DCoin.totalCoins + " Coins.");
            //Destroy coin
            Destroy(gameObject);
        }
    }
}
  • Hängen Sie das SC_2DCoin-Skript an das "Coin"-Objekt an
  • Wählen Sie Ihr Spielerobjekt aus und stellen Sie sicher, dass sein Tag auf "Player" eingestellt ist (dies ist erforderlich, um die Münze aufnehmen zu können).

Die Münze ist nun fertig, Sie können sie unter Prefab speichern und im Level duplizieren.

Um einen Münzzähler zu erstellen, führen Sie die folgenden Schritte aus:

  • Erstellen Sie ein neues UI-Bild, indem Sie mit der rechten Maustaste auf die Hierarchieansicht -> UI -> Bild klicken und es benennen "CoinIcon"
  • Weisen Sie der Bildkomponente ein Münz-Sprite zu
  • Ändern Sie die Ausrichtung von RectTransform in 'top left', Pivot in (0, 1), Post X in '5', Pos Y in '-5', Breite und Höhe in '25'

  • Erstellen Sie einen neuen Text, indem Sie mit der rechten Maustaste auf die Hierarchieansicht -> Benutzeroberfläche -> Text klicken und ihn benennen "CoinCounter"
  • Setzen Sie "CoinCounter" RectTransform auf das gleiche wie "CoinIcon", außer dass Sie Pos X auf '35' und Breite auf setzen '160'
  • Stellen Sie den Textschriftstil auf 'Bold', die Schriftgröße auf 22, die Ausrichtung auf 'left center' und die Farbe auf ein 'white'

  • Erstellen Sie ein neues Skript, nennen Sie es "SC_CoinCounter", entfernen Sie alles daraus und fügen Sie dann den folgenden Code ein:

Das Münzzähler-Skript wendet die Anzahl der Münzen auf das Textelement an.

SC_CoinCounter.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class SC_CoinCounter : MonoBehaviour
{
    Text counterText;

    // Start is called before the first frame update
    void Start()
    {
        counterText = GetComponent<Text>();
    }

    // Update is called once per frame
    void Update()
    {
        //Set the current number of coins to display
        if(counterText.text != SC_2DCoin.totalCoins.ToString())
        {
            counterText.text = SC_2DCoin.totalCoins.ToString();
        }
    }
}
  • Hängen Sie das SC_CoinCounter-Skript an das Textobjekt "CoinCounter" an

Drücken Sie „Play“ und beobachten Sie, wie die Münzen bei Spielerkontakt verschwinden und einem Zähler hinzugefügt werden.