laser mine and source
10 removals
Words removed | 12 |
Total words | 145 |
Words removed (%) | 8.28 |
72 lines
32 additions
Words added | 66 |
Total words | 199 |
Words added (%) | 33.17 |
92 lines
using System.Collections;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine;
public class Shooter : MonoBehaviour
public class ShooterCOPY : MonoBehaviour
{
{
Coroutine firingCoroutine;
AudioPlayer audioPlayer;
[Header("General")]
[Header("General")]
[SerializeField] GameObject projectilePrefab;
[SerializeField] GameObject projectilePrefab;
[SerializeField] float projectileSpeed = 10f;
[SerializeField] float projectileSpeed = 10f;
[SerializeField] float projectileLifetime = 5f;
[SerializeField] float projectileLifetime = 5f;
[SerializeField] float baseFiringRate = 0.2f;
[SerializeField] float baseFiringRate = 0.2f;
[Header("AI")]
[Header("AI")]
[SerializeField] bool useAI;
[SerializeField] bool useAI;
/* [SerializeField] float aiShootSpeedLow = 1f;
[SerializeField] float aiShootSpeedHigh = 4f; */
[SerializeField] float firingRateVariance = 0f;
[SerializeField] float firingRateVariance = 0f;
[SerializeField] float minimumFiringRate = 0.1f;
[SerializeField] float minimumFiringRate = 0.1f;
[HideInInspector] public bool isFiring;
[HideInInspector] public bool isFiring;
Coroutine firingCoroutine;
void Awake()
{
audioPlayer = FindObjectOfType<AudioPlayer>();
}
void Start()
void Start()
{
{
if (useAI)
if (useAI)
{
{
isFiring = true;
isFiring = true;
}
}
}
}
void Update()
void Update()
{
{
Fire();
Fire();
}
}
void Fire()
void Fire()
{
{
if (isFiring && firingCoroutine == null)
if (isFiring && firingCoroutine == null)
{
{
firingCoroutine = StartCoroutine(FireContinuously());
Debug.Log("starting our coroutine");
firingCoroutine = StartCoroutine(FireContinously());
}
}
else if (!isFiring && firingCoroutine != null)
else if (!isFiring && firingCoroutine != null)
{
{
Debug.Log("stopping our corouting");
StopCoroutine(firingCoroutine);
StopCoroutine(firingCoroutine);
firingCoroutine = null;
firingCoroutine = null;
}
}
}
}
IEnumerator FireContinuously()
IEnumerator FireContinously()
{
{
while (true)
while (true)
{
{
GameObject instance = Instantiate(projectilePrefab,
GameObject instance = Instantiate(projectilePrefab, transform.position, Quaternion.identity);
transform.position,
Quaternion.identity);
Rigidbody2D rb = instance.GetComponent<Rigidbody2D>();
Rigidbody2D rb = instance.GetComponent<Rigidbody2D>();
if (rb != null)
if (rb != null)
{
{
rb.velocity = transform.up * projectileSpeed;
rb.velocity = transform.up * projectileSpeed;
}
}
Destroy(instance, projectileLifetime);
Destroy(instance, projectileLifetime);
float timeToNextProjectile = Random.Range(baseFiringRate - firingRateVariance,
/* if (useAI)
baseFiringRate + firingRateVariance);
{ */
//firingRate = Random.Range(1, 4);
float timeToNextProjectile = Random.Range(baseFiringRate - firingRateVariance, baseFiringRate + firingRateVariance);
timeToNextProjectile = Mathf.Clamp(timeToNextProjectile, minimumFiringRate, float.MaxValue);
timeToNextProjectile = Mathf.Clamp(timeToNextProjectile, minimumFiringRate, float.MaxValue);
if (transform.position.x > -5 && transform.position.x < 5)
{
audioPlayer.PlayClip(soundTypes.shooting);
}
//}
Debug.Log($"Time to next projectile is {timeToNextProjectile}");
yield return new WaitForSeconds(timeToNextProjectile);
yield return new WaitForSeconds(timeToNextProjectile);
}
}
}
}
}
}