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.
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.)
- 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.