private void OnCollisionEnter(Collision other) { // se si collide con il player if (other.transform.CompareTag("Player")) { // se e' presente un componente di tipo FPSController if (other.transform.GetComponent <FPSController>() != null) { // assegno la variabile fpsController = other.transform.GetComponent <FPSController>(); // se il gameobject a cui e' attaccato lo script contiene un componente di tipo WeaponProps if (GetComponent <WeaponProps>() != null) { // assegno la variabile weapon = GetComponent <WeaponProps>(); // se l'arma e' la granata utilizzo il suo metodo per ricaricare if (weapon._name == "Granade") { ExplosiveLauncher granadeHolderManager = other.transform.GetComponent <FPSController>().granadeHolder.GetComponent <ExplosiveLauncher>(); if (!granadeHolderManager.IsWeaponFull(weapon._name)) { // ricarica la granata granadeHolderManager.RefillAmmoToWeapon(weapon._name, weapon._currentChargerAmmo); // distruggi l'oggetto Destroy(gameObject); } } // se l'arma e' un'arma generica utilizzo il metodo generico per la ricarica else { WeaponHolderManager weaponHolderManager = other.transform.GetComponent <FPSController>().weaponHolder.GetComponent <WeaponHolderManager>(); if (weaponHolderManager.IsUnlocked(weapon._name) && !weaponHolderManager.IsWeaponFull(weapon._name)) { // ricarica l'arma weaponHolderManager.RefillAmmoToWeapon(weapon._name, weapon._currentChargerAmmo); // distruggi l'oggetto Destroy(gameObject); } } } } } }
// Use this for initialization void Start() { weaponHolder = GetComponentInParent <WeaponHolderManager>(); cam = weaponHolder.playerCamera; weaponProps = GetComponent <WeaponProps>(); MeshRenderer[] materialsTemp = transform.GetComponentsInChildren <MeshRenderer>(); foreach (MeshRenderer mat in materialsTemp) { materials.Add(mat.material); } explosiveLauncher.currentWeapon = this; gameController = GameObject.FindGameObjectWithTag("GameController").GetComponent <GameController>(); if (flashLight != null) { flashLight.gameObject.SetActive(false); } }