| using System.Collections; | |
| using System.Collections.Generic; | |
| using UnityEngine; | |
| using UnityEngine.UI; | |
| public class MegaHands : MonoBehaviour | |
| { | |
| public GameObject rocket; | |
| public GameObject explosion; | |
| public GameObject spawnPoint; | |
| public Sprite idleHands; | |
| public Sprite shootHands; | |
| public AudioClip shotSound; | |
| public AudioClip reloadSound; | |
| public AudioClip emptySound; | |
| public AudioClip explosionSound; | |
| public float rocketForce; | |
| public float explosionRadius; | |
| public float explosionDamage; | |
| public LayerMask explosionMask; | |
| public Text ammoText; | |
| public int rocketsAmount; | |
| public int rocketsLeft; | |
| int maxRockets = 4; | |
| int rocketLoaded; | |
| AudioSource source; | |
| GameManager gameManager; | |
| bool isReloading; | |
| bool isCharged; | |
| bool isShot; | |
| private void Awake() | |
| { | |
| source = GetComponent<AudioSource>(); | |
| rocketsLeft = rocketsAmount; | |
| gameManager = FindObjectOfType<GameManager>(); | |
| rocketsLeft = gameManager.violetAmmo; | |
| } | |
| private void OnEnable() | |
| { | |
| isReloading = false; | |
| } | |
| void Update() | |
| { | |
| rocketLoaded = isCharged ? 1 : 0; | |
| ammoText.text = "ENERGY: " + rocketLoaded + " / " + rocketsLeft; | |
| if (Input.GetButtonDown("Fire1") && isCharged && !isReloading && gameManager.isDead == false) | |
| { | |
| isCharged = false; | |
| StartCoroutine(Shoot()); | |
| source.PlayOneShot(shotSound, 0.5f); | |
| GameObject rocketInstance = (GameObject)Instantiate(rocket, spawnPoint.transform.position, Quaternion.identity); | |
| rocketInstance.GetComponent<Rocket>().damage = explosionDamage; | |
| rocketInstance.GetComponent<Rocket>().radius = explosionRadius; | |
| rocketInstance.GetComponent<Rocket>().explosionSound = explosionSound; | |
| rocketInstance.GetComponent<Rocket>().layerMask = explosionMask; | |
| rocketInstance.GetComponent<Rocket>().explosion = explosion; | |
| Rigidbody rocketRB = rocketInstance.GetComponent<Rigidbody>(); | |
| rocketRB.AddForce(Camera.main.transform.forward * rocketForce, ForceMode.Impulse); | |
| Reload(); | |
| } | |
| else if (Input.GetButtonDown("Fire2") && !isCharged && !isReloading && gameManager.isDead == false || | |
| Input.GetKeyDown(KeyCode.R) && !isCharged && !isReloading && gameManager.isDead == false) | |
| { | |
| Reload(); | |
| } | |
| if (rocketsLeft > maxRockets) | |
| { | |
| rocketsLeft = maxRockets; | |
| } | |
| } | |
| void Reload() | |
| { | |
| if (rocketsLeft <= 0) | |
| { | |
| source.PlayOneShot(emptySound, 0.4f); | |
| } | |
| else | |
| { | |
| StartCoroutine(ReupAmmo()); | |
| rocketsLeft--; | |
| isCharged = true; | |
| } | |
| } | |
| public void AmmoCollect(int rocketsUp) | |
| { | |
| if (rocketsLeft <= maxRockets - rocketsUp) | |
| { | |
| rocketsLeft += rocketsUp; | |
| } | |
| else if (rocketsLeft > maxRockets - rocketsUp) | |
| { | |
| rocketsLeft = maxRockets; | |
| } | |
| } | |
| IEnumerator ReupAmmo() | |
| { | |
| isReloading = true; | |
| source.PlayOneShot(reloadSound, 0.6f); | |
| yield return new WaitForSeconds(1f); | |
| isReloading = false; | |
| } | |
| IEnumerator Shoot() | |
| { | |
| GetComponent<SpriteRenderer>().sprite = shootHands; | |
| yield return new WaitForSeconds(0.75f); | |
| GetComponent<SpriteRenderer>().sprite = idleHands; | |
| } | |
| } |