2D-munten verzamelen in eenheid

Het plukken en verzamelen van munten is een belangrijk onderdeel geworden van 2D-games, vooral in 2D-platformgames.

Om een ​​munt op te halen in Unity moeten we een script maken dat aan een munt object wordt gekoppeld en dat vernietigd zodra de speler ermee in contact komt, waardoor de tellerwaarde wordt bijgewerkt.

Sharp Coder Video speler

Ik ga de 2D Character Controller gebruiken, maar je kunt dit deel overslaan als je al een 2D-controller hebt.

Stappen

Volg de onderstaande stappen om een ​​2D-munt te maken die kan worden opgepakt en verzameld:

  • Maak een nieuw GameObject (GameObject -> Leeg maken) en geef het een naam "Coin"
  • Voeg een SpriteRenderer-component toe aan het "Coin"-object
  • Wijs uw muntsprite toe aan de SpriteRenderer (u kunt de onderstaande afbeelding gebruiken, zorg ervoor dat het textuurtype in de importinstellingen is ingesteld op 'Sprite (2D and UI)')

Gouden munt transparant beeld

  • Schaal het Coin-object tot de gewenste grootte
  • Verander de positie van de munt 'Z'-as zodat deze overeenkomt met de positie van de speler
  • Voeg een BoxCollider2D-component toe aan het "Coin"-object
  • Maak een nieuw script, noem het "SC_2DCoin", verwijder alles eruit en plak de onderstaande code erin:

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);
        }
    }
}
  • Voeg het SC_2DCoin-script toe aan het "Coin"-object
  • Selecteer je spelerobject en zorg ervoor dat de tag is ingesteld op "Player" (dit is nodig om de munt te kunnen oppakken)

De munt is nu klaar, je kunt hem opslaan in Prefab en hem dupliceren in het level.

Om een ​​muntteller aan te maken, volgt u de onderstaande stappen:

  • Maak een nieuwe UI-afbeelding door met de rechtermuisknop op de hiërarchieweergave -> UI -> Afbeelding te klikken en deze een naam te geven "CoinIcon"
  • Wijs muntsprite toe aan de component Afbeelding
  • Wijzig de RectTransform-uitlijning naar 'top left', Draai naar (0, 1), Post X naar '5', Pos Y naar '-5', Breedte en Hoogte naar '25'

  • Maak een nieuwe tekst door met de rechtermuisknop op de hiërarchieweergave -> gebruikersinterface -> tekst te klikken en deze een naam te geven "CoinCounter"
  • Stel "CoinCounter" RectTransform hetzelfde in als "CoinIcon", behalve dat Pos X wordt ingesteld op '35' en Breedte op '160'
  • Stel de tekstlettertypestijl in op 'Bold', de lettergrootte op 22, de uitlijning op 'left center' en de kleur op 'white'

  • Maak een nieuw script, noem het "SC_CoinCounter", verwijder alles eruit en plak de onderstaande code erin:

Het muntentellerscript past het aantal munten toe op het tekstelement.

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();
        }
    }
}
  • Voeg het SC_CoinCounter-script toe aan het "CoinCounter" tekstobject

Druk op Play en zie hoe de munten verdwijnen bij contact met de speler en worden toegevoegd aan een teller.

Voorgestelde artikelen
Hoe u het nieuwe HDRP-watersysteem in eenheid kunt gebruiken
Script voor het maken van een lichtschakelaar in eenheid
Joystickcontroller instellen voor beweging in eenheid
Eenheid FPS-teller
Doelindicator in eenheid
Slow motion-effect in eenheid
Deurscripts voor eenheid