using System.Collections; using UnityEngine; using UnityEngine.Serialization; public class KitchenGun : MonoBehaviour { // The shot projectiles public GameObject projectilePrefab; // Time between shots, game needs to be restarted to take effect public float shotIntervalSeconds = 1f; // Time alive for the projectiles public float shotAliveSeconds = 1f; // Time until collider gets enabled public float colliderDisabledSeconds = .2f; // Speed of projectiles public Vector2 shotSpeed = new Vector2(1f, 0f); // Smallest step size for shot speed private short shotSpeedStepSize = 50; // Start is called before the first frame update void Start() { InvokeRepeating("RecurringBang",0f,shotIntervalSeconds); } // Update is called once per frame void Update() { } void RecurringBang() { StartCoroutine("Bang"); } private IEnumerator Bang() { Transform t = transform; Vector3 position = t.position; // create projectile GameObject projectile = Instantiate(projectilePrefab, position, t.rotation); // determine correct force vector Vector2 force = shotSpeed; if (t.localScale.x < 0) { force *= -1; } force *= shotSpeedStepSize; // add force to projectile projectile.GetComponent().AddRelativeForce(force); // wait until enabling collider yield return new WaitForSeconds(colliderDisabledSeconds); projectile.GetComponent().enabled = true; // wait given time before destroying yield return new WaitForSeconds(shotAliveSeconds); Destroy(projectile); } }