private void AttackTarget() { if (attackCooldown > 0) { return; } attackCooldown = baseAttackCooldown; var projectile = Instantiate( projectilePrefab, firePoint.position, Quaternion.FromToRotation(Vector3.right, target.transform.position - firePoint.position) // towards target ); // TODO : refactor this shit if (projectile.GetComponent <ProjectileMover>()) { projectile.GetComponent <ProjectileMover>().SetTarget(target); } if (projectile.GetComponent <SplashMover>()) { projectile.GetComponent <SplashMover>().SetTarget(target); } var projectileAttack = projectile.GetComponent <Attack>(); projectileAttack.SetSourceStats(unitStatsComponent.CreateSnapshotAttackStats()); projectileAttack.SetBaseDamage(damagePerAttack); }