Zbieranie monet 2D w Unity

Zbieranie i zbieranie monet stało się podstawą gier 2D, szczególnie w platformówkach 2D.

Aby podnieść monetę w Unity, będziemy musieli stworzyć skrypt, który zostanie dołączony do obiektu coin i zostanie zniszczony, gdy gracz wejdzie z nim w kontakt, aktualizacja wartości licznika.

Sharp Coder Odtwarzacz wideo

Będę używał kontrolera postaci 2D, ale możesz pominąć tę część, jeśli masz już kontroler 2D.

Kroki

Aby stworzyć monetę 2D, którą można podnieść i zebrać, wykonaj poniższe czynności:

  • Utwórz nowy obiekt GameObject (GameObject -> Utwórz pusty) i nadaj mu nazwę "Coin"
  • Dołącz komponent SpriteRenderer do obiektu "Coin"
  • Przypisz duszka monety do SpriteRenderer (możesz użyć poniższego obrazu, upewnij się, że typ tekstury w ustawieniach importu jest ustawiony na 'Sprite (2D and UI)')

Przezroczysty obraz złotej monety

  • Skaluj obiekt Moneta do żądanego rozmiaru
  • Zmień pozycję osi monety 'Z' tak, aby odpowiadała pozycji gracza
  • Dołącz komponent BoxCollider2D do obiektu "Coin"
  • Utwórz nowy skrypt, nazwij go "SC_2DCoin", usuń z niego wszystko, a następnie wklej do niego poniższy kod:

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);
        }
    }
}
  • Dołącz skrypt SC_2DCoin do obiektu "Coin"
  • Wybierz obiekt gracza i upewnij się, że jego znacznik jest ustawiony na "Player" (jest to konieczne, aby móc podnieść monetę)

Moneta jest już gotowa, możesz ją zapisać w Prefab i powielić na każdym poziomie.

Aby utworzyć licznik monet, wykonaj poniższe czynności:

  • Utwórz nowy obraz interfejsu użytkownika, klikając prawym przyciskiem myszy widok hierarchii -> interfejs użytkownika -> obraz i nadaj mu nazwę "CoinIcon"
  • Przypisz duszka monety do komponentu Obraz
  • Zmień wyrównanie RectTransform na 'top left', obrót na (0, 1), pocztę X na '5', pozycję Y na '-5', szerokość i wysokość na '25'

  • Utwórz nowy tekst, klikając prawym przyciskiem myszy widok Hierarchia -> Interfejs użytkownika -> Tekst i nadaj mu nazwę "CoinCounter"
  • Ustaw "CoinCounter" RectTransform tak samo jak "CoinIcon", z tą różnicą, że ustaw Pos X na '35' i Szerokość na '160'
  • Ustaw styl czcionki tekstu na 'Bold', rozmiar czcionki na 22, wyrównanie na 'left center' i kolor na 'white'

  • Utwórz nowy skrypt, nazwij go "SC_CoinCounter", usuń z niego wszystko, a następnie wklej do niego poniższy kod:

Skrypt licznika monet zastosuje liczbę monet do elementu Tekst.

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();
        }
    }
}
  • Dołącz skrypt SC_CoinCounter do obiektu tekstowego "CoinCounter"

Naciśnij przycisk Graj i obserwuj, jak monety znikają po kontakcie z graczem i są dodawane do licznika.

Sugerowane artykuły
Zone Controller Pro — pakiet Unity Asset Store
Jak korzystać z nowego systemu wodnego HDRP w Unity
Pływak FPC — wszechstronne rozwiązanie umożliwiające zanurzenie się w środowiskach wodnych
Ultimate Spawner 2.0 — zasób zmieniający zasady gry
Skrypt wyglądu myszy dla Unity
Weather Maker — wznosi środowiska jedności na nowy poziom
Jak korzystać z kontrolera Xbox w Unity