Один скрипт на несколько объектов
Код ящика:
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();
}