Colección de monedas 2D en Unity

Elegir y coleccionar monedas se ha convertido en un elemento básico en los juegos 2D, especialmente en 2D Platformers.

Para recoger una moneda en Unity necesitaremos crear un script que se adjuntará a una moneda objeto y se destruirá una vez que el jugador entre en contacto con él, actualizando el valor del contador.

Sharp Coder Reproductor de video

Usaré el Controlador de caracteres 2D, pero puedes omitir esta parte si ya tienes un controlador 2D.

Pasos

Para hacer una moneda 2D que se pueda recoger y recolectar, siga los pasos a continuación:

  • Cree un nuevo GameObject (GameObject -> Create Empty) y asígnele un nombre "Coin"
  • Adjunte un componente SpriteRenderer al objeto "Coin"
  • Asigne su sprite de moneda al SpriteRenderer (puede usar la imagen a continuación, asegúrese de que el Tipo de textura en Configuración de importación esté configurado en 'Sprite (2D and UI)')

Imagen transparente de moneda de oro

  • Escale el objeto Moneda hasta el tamaño deseado
  • Cambie la posición del eje de la moneda 'Z' para que coincida con la posición del jugador
  • Adjunte un componente BoxCollider2D al objeto "Coin"
  • Cree un nuevo script, llámelo "SC_2DCoin", elimine todo y luego pegue el siguiente código dentro de él:

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);
        }
    }
}
  • Adjunte el script SC_2DCoin al objeto "Coin"
  • Seleccione su objeto de jugador y asegúrese de que su etiqueta esté configurada en "Player" (esto es necesario para poder recoger la moneda)

La moneda ya está lista, puedes guardarla en Prefab y duplicarla alrededor del nivel.

Para crear un contador de monedas, siga los pasos a continuación:

  • Cree una nueva imagen de interfaz de usuario haciendo clic con el botón derecho en la vista de jerarquía -> Interfaz de usuario -> Imagen y asígnele un nombre "CoinIcon"
  • Asigne el sprite de moneda al componente Imagen
  • Cambie la alineación de RectTransform a 'top left', gire a (0, 1), publique X a '5', pos Y a '-5', ancho y alto a '25'

  • Cree un nuevo texto haciendo clic con el botón derecho en la vista de jerarquía -> IU -> Texto y asígnele un nombre "CoinCounter"
  • Establezca "CoinCounter" RectTransform igual que "CoinIcon", excepto que establezca Pos X en '35' y Width en '160'
  • Establezca Estilo de fuente de texto en 'Bold', Tamaño de fuente en 22, Alineación en 'left center' y Color en 'white'

  • Cree un nuevo script, llámelo "SC_CoinCounter", elimine todo y luego pegue el siguiente código dentro:

El guión del contador de monedas aplicará el número de monedas al elemento Texto.

SC_ContadorMonedas.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();
        }
    }
}
  • Adjunte el script SC_CoinCounter al objeto de texto "CoinCounter"

Presiona Play y observa cómo las monedas desaparecen al contacto del jugador y se agregan a un contador.