Home > Software design >  My Script For Ammo And Collision Wont Let The Ammo Run Out
My Script For Ammo And Collision Wont Let The Ammo Run Out

Time:07-01

I am trying to make an ammo system in unity but it will not work. The Problem Is That I Can Keep Destroying The Aestroid Even When My Ammo Runs Out.

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class ExplosionOnTouch : MonoBehaviour
{
    // Start is called before the first frame update
    public int Ammo = 10;
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {

    }
    private void OnCollisionEnter2D(Collision2D collision)
    {
        if (Ammo > 0)
        {
            Ammo = Ammo - 1;
            Destroy(gameObject);
        }
        else
        {
        SceneManager.LoadScene("DeathScreen", LoadSceneMode.Single);
        }
    }
}

CodePudding user response:

Your Ammo will never become zero. Your script lifecycle now is:

  • create an object
  • set Ammo to 10 on creation
  • decrease Ammo on collision and destroy object with Ammo count 9

So you need to move your Ammo count to one place and to make all scripts decrease one common counter instead of unique for every object. For example, to the script that creates your bullets. It will be much more logical.

  • Related