public static void FireProjectile(Vector2 start, Vector2 direction, ProjectileDefinition def) { for (int i = 0; i < def.projectileCount; i++) { Projectile proj = ProjectilePool.Instance.RequestProjectile(); proj.gameObject.layer = def.layer; Vector2 drn = GetRandomDirectionPlane(direction, Vector3.forward, def.spreadAngle); proj.Fire(start, drn, def); } }
public void Fire(Vector2 start, Vector2 direction, ProjectileDefinition def) { definition = def; gameObject.SetActive(true); transform.position = start; transform.rotation = Quaternion.LookRotation(Vector3.forward, Quaternion.Euler(0, 0, 90) * direction); body.velocity = direction.normalized * def.velocity; collider.radius = def.collisionRadius; lifeTime = def.lifeTime + Time.time; def.OnProjectileFire(this); }