38 lines
1.4 KiB
C#
38 lines
1.4 KiB
C#
using UnityEngine;
|
|
|
|
[CreateAssetMenu(fileName = "New Enemy Projectile Ability", menuName = "EnemyAbilities/FireBullet")]
|
|
public class EnemyFireBullet : EnemyAbility
|
|
{
|
|
public enum FireMode {Angled, Offset};
|
|
[Header("Projectile")]
|
|
public FireMode fireMode = FireMode.Offset;
|
|
public Vector2 offset;
|
|
public float angle;
|
|
public int projectileCount;
|
|
public int pierceAmount;
|
|
public float projectileSpeed;
|
|
public float bulletLifetime;
|
|
public float accuracy;
|
|
public Projectile projectile;
|
|
|
|
public override void UseAbility(Entity target, Enemy owner)
|
|
{
|
|
for (int i = 0; i < projectileCount; i++)
|
|
{
|
|
Projectile newProjectile = Instantiate(projectile, owner.transform.position, Quaternion.identity);
|
|
newProjectile.RotateToTarget(target.transform.position);
|
|
if (fireMode == FireMode.Offset && projectileCount > 1)
|
|
{
|
|
newProjectile.transform.position += new Vector3(Random.Range(-offset.x, offset.x), Random.Range(-offset.y, offset.y));
|
|
}
|
|
|
|
newProjectile.owner = owner;
|
|
newProjectile.pierceAmount = pierceAmount;
|
|
newProjectile.damage = power;
|
|
newProjectile.speed = projectileSpeed;
|
|
newProjectile.lifetime = bulletLifetime;
|
|
newProjectile.transform.Rotate(0, 0, Random.Range(-accuracy, accuracy));
|
|
newProjectile.tag = owner.tag;
|
|
}
|
|
}
|
|
}
|