Coin Manager

Hi,
i’m trying to make a simple coin manager for my 2d game.

i tried and failed making it on the player script as i couldn’t add the UI Text to the coin object.

i have tried the script below on an empty gameobject and now its not working at all…

My Player object has a collider and my coin object is a trigger, i dont know if this will be an issue?
Can anyone help?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Coin : MonoBehaviour {

    public Collider2D Player;
    public Collider2D Coins;
    public GameObject Coinz;
    public Text countText;
    //public Text winText;
    private int count;

    void Start()
    {
        //winText.text = "";
        SetCountText();
        count = 0;
        
    }

    void Update()
    {
        CoinManager();
    }

    void CoinManager()
    {
        if (Player.IsTouching(Coins))
        {
            Destroy(Coinz);
            count = count + 1;
            SetCountText();
        }

    }

    void SetCountText()
    {
        countText.text = "Count: " + count.ToString();
    }
}

Hi, sorry,

I have this script sat on an empty game object.

When I run the game, the rest is playing and works fine an the UI object does show 0.

But when the player hits the object none of the functions work, so it doesn’t destroy the coins object, or add 1 to the UI.

Ok, I think I get what you are trying to do, but I think you designed it backwards.

Have a CoinManager script that keeps count of coins collected and manages the UI text.

Have a separate script for your coins that has OnCollisionEnter2D method and a reference to the CoinManager. (the reference can be a static instance of CoinManager) When you detect collision check if it’s the player object your coin collided with and then call AddCoin method on your CoinManager and destroy the coin.

Checking each frame if colliders are touching is kind of a weird thing to do, especially in this case