2D-møntindsamling i enhed
Møntplukning og -indsamling er blevet en fast bestanddel i 2D-spil, især i 2D Platformers.
For at hente en mønt i Unity skal vi oprette et script, der vil blive knyttet til et coin objekt og vil blive ødelagt, når spilleren kommer i kontakt med det, opdatering af tællerværdien.
Jeg vil bruge 2D Character Controller, men du kan springe denne del over, hvis du allerede har en 2D-controller.
Trin
Følg nedenstående trin for at lave en 2D-mønt, der kan samles op og indsamles:
- Opret et nyt GameObject (GameObject -> Create Empty) og navngiv det "Coin"
- Vedhæft en SpriteRenderer-komponent til "Coin"-objektet
- Tildel din møntsprite til SpriteRenderer (du kan bruge billedet nedenfor, sørg for at teksturtypen i importindstillingerne er indstillet til 'Sprite (2D and UI)')
- Skaler møntobjektet til den ønskede størrelse
- Skift møntens 'Z'-akseposition, så den matcher spillerens position
- Vedhæft en BoxCollider2D-komponent til "Coin"-objektet
- Opret et nyt script, kald det "SC_2DCoin", fjern alt fra det, og indsæt derefter koden nedenfor i det:
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);
}
}
}
- Vedhæft SC_2DCoin-scriptet til "Coin"-objektet
- Vælg dit spillerobjekt, og sørg for, at dets tag er indstillet til "Player" (dette er nødvendigt for at kunne hente mønten)
Mønten er nu klar, du kan gemme den i Prefab og duplikere den rundt om niveauet.
Følg nedenstående trin for at oprette en mønttæller:
- Opret et nyt brugergrænsefladebillede ved at højreklikke på hierarkivisningen -> brugergrænseflade -> billede og navngive det "CoinIcon"
- Tildel møntsprite til billedkomponenten
- Skift RectTransform Alignment til 'top left', Pivot til (0, 1), Post X til '5', Pos Y til '-5', Bredde og Højde til '25'
- Opret ny tekst ved at højreklikke på hierarkivisningen -> UI -> Tekst og navngive den "CoinCounter"
- Indstil "CoinCounter" RectTransform det samme som "CoinIcon", bortset fra at Pos X skal indstilles til '35' og Width til '160'
- Indstil tekstskrifttype til 'Bold', skriftstørrelse til 22, justering til 'left center' og farve til 'white'
- Opret et nyt script, kald det "SC_CoinCounter", fjern alt fra det, og indsæt derefter koden nedenfor i det:
Mønttællerscriptet vil anvende antallet af mønter på tekstelementet.
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();
}
}
}
- Vedhæft SC_CoinCounter-scriptet til "CoinCounter"-tekstobjektet
Tryk på Play og se mønterne forsvinde ved spillerkontakt og føjes til en tæller.