51 lines
1.5 KiB
C#
51 lines
1.5 KiB
C#
using UnityEngine;
|
|
|
|
public class ShootScript: MonoBehaviour
|
|
{
|
|
public Transform Gun, ShootPoint;
|
|
public float BulletSpeed, BulletRange, BulletDamage, BulletUnloadSpeed, BulletMagSize, BulletReloadSpeed, BulletBurstAmount;
|
|
private float BurstTimer, BurstCounter;
|
|
private string ProjectileType;
|
|
Vector2 direction;
|
|
|
|
|
|
private void Update()
|
|
{
|
|
Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
|
|
direction = mousePos - (Vector2)Gun.position;
|
|
FaceMouse();
|
|
|
|
|
|
BurstTimer -= Time.deltaTime;
|
|
|
|
if (BulletBurstAmount > 0 && BurstTimer < 0)
|
|
{
|
|
GameObject BulletInstance = Instantiate(GameObject.Find(ProjectileType), ShootPoint.position, ShootPoint.rotation * Quaternion.Euler(0, 0, 90));
|
|
BulletInstance.GetComponent<Rigidbody2D>().AddForce(BulletInstance.transform.up * -1 * BulletSpeed);
|
|
|
|
BurstTimer = BurstCounter;
|
|
BulletBurstAmount--;
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
void FaceMouse()
|
|
{
|
|
Gun.transform.right = direction;
|
|
}
|
|
|
|
public void Shoot(string projectile, float speed, float range, float damage, float unload, float burst = 1, float burstSpeed = 0)
|
|
{
|
|
ProjectileType = projectile;
|
|
BulletRange = range;
|
|
BulletDamage = damage;
|
|
BulletSpeed = speed;
|
|
BulletUnloadSpeed = unload;
|
|
BulletBurstAmount = burst;
|
|
BurstCounter = burstSpeed;
|
|
BurstTimer = BurstCounter;
|
|
}
|
|
}
|