Один скрипт на несколько объектов

Код ящика:

using UnityEngine;

public class AmmoPistol : MonoBehaviour
{
    PlayerAmmo pAmmo;

    [SerializeField] private string gun;
    [SerializeField] private int countAmmo;

    private void Start()
    {
        pAmmo = FindObjectOfType<PlayerAmmo>().GetComponent<PlayerAmmo>();
    }

    public void TakeAmmoPistol()
    {
        if (gun == "Pistol")
        {
            pAmmo.ammoPistol += countAmmo;
            Destroy(gameObject);
        }
    }

    public void TakeAmmoRifle()
    {
        if (gun == "Rifle")
        {
            pAmmo.ammoRifle += countAmmo;
            Destroy(gameObject);
        }
    }
}

У меня есть ящик с патронами. У него есть поле gun, отвечающее за тип патронов в ящике ("Pistol", "Rifle").

На сцене есть два ящика, один gun = "Pistol", другой gun = "Rifle". Нужно, чтобы когда поднимаешь ящик, добавлялись именно те патроны, которые указаны в поле gun у того объекта, с которым взаимодействовал, и после ящик удалялся.

С моей реализацией получается, что взаимодействие происходит только с ящиком, у которого поле gun = "Rifle", а другой никак не реагирует. Взаимодействие сделано через рейкаст по тегам.

Взаимодействие с ящиком:

if (Input.GetKeyDown(KeyCode.F))
{
    if (hit.collider.gameObject.tag == "AmmoPistol")
        ammop.TakeAmmoPistol();
    if (hit.collider.gameObject.tag == "AmmoRifle")
        ammop.TakeAmmoRifle();
}

Ответы (0 шт):