/// <summary> /// Start this instance. /// </summary> void Start() { Debug.Assert(bulletPrefab, "Wrong initial settings"); AttackRanged attack = tower.GetComponentInChildren <AttackRanged>(); if (attack != null) { float radius = radiusCollider.radius * Mathf.Max(radiusCollider.transform.localScale.x, radiusCollider.transform.localScale.y); // Get all enemies in attack radius Collider2D[] enemies = Physics2D.OverlapCircleAll(radiusCollider.transform.position, radius, 1 << LayerMask.NameToLayer("Enemy")); GameObject defaultBulletPrefab = attack.arrowPrefab; attack.arrowPrefab = bulletPrefab; foreach (Collider2D enemy in enemies) { // Attack every enemy attack.Fire(enemy.gameObject.transform); } attack.arrowPrefab = defaultBulletPrefab; } else { Debug.Log("This tower can not use attack skills"); } Destroy(gameObject); }
/// <summary> /// Awake this instance. /// </summary> void Awake() { aiBehavior = GetComponent <AiBehavior>(); meleeAttack = GetComponentInChildren <AttackMelee>() as IAttack; rangedAttack = GetComponentInChildren <AttackRanged>(); nav = GetComponent <NavAgent>(); Debug.Assert((aiBehavior != null) && ((meleeAttack != null) || (rangedAttack != null)), "Wrong initial parameters"); }
//public float incSpeed = 2; // Use this for initialization void Start() { //at= GetComponentInParent<ArcherTower>(); //at.GetClosestEnemy() AttackRanged at = from.GetComponent <AttackRanged>(); enemy = at.GetClosestTarget(); //speed = at.dmg + incSpeed; }
public static string SerializeAttackData(AttackBase ab, int indentLevel) { System.Text.StringBuilder attackString = new System.Text.StringBuilder(); AddIndentedString(attackString, String.Format("Data for {0}", ab.name), indentLevel); AddIndentedString(attackString, $"Damage Data: {ab.DamageData.Minimum} - {ab.DamageData.Maximum} of type {ab.DamageData.Type.ToString()}", indentLevel); AddIndentedString(attackString, $"Accuracy Bonus: {ab.AccuracyBonus}", indentLevel); AddIndentedString(attackString, $"Range: {ab.AttackDistance}", indentLevel); AddIndentedString(attackString, $"DT Bypass: {ab.DTBypass}", indentLevel); AddIndentedString(attackString, $"Speed: {ab.AttackSpeedTime}", indentLevel); AddIndentedString(attackString, $"Push: {ab.PushDistance}", indentLevel); AddIndentedString(attackString, $"Defended By: {ab.DefendedBy.ToString()}", indentLevel); AddIndentedString(attackString, $"Status Effects Count: {ab.StatusEffects.Count}", indentLevel); foreach (StatusEffectParams effect in ab.StatusEffects) { AddIndentedString(attackString, String.Format("Status Effect: {0} for {1}, {2}", effect.AffectsStat, effect.Duration, effect.Value), indentLevel); } AddIndentedString(attackString, $"Afflictions Count: {ab.Afflictions.Count}", indentLevel); foreach (AfflictionParams affliction in ab.Afflictions) { AddIndentedString(attackString, $"Affliction: {affliction.AfflictionPrefab.name} for {affliction.Duration}", indentLevel); } if (ab is AttackRanged) { AttackRanged abRanged = ab as AttackRanged; //Anything to do here? } if (ab is AttackAOE) { AttackAOE abAOE = ab as AttackAOE; AddIndentedString(attackString, $"Blast Radius: {abAOE.BlastRadius}", indentLevel); AddIndentedString(attackString, $"Blast Angle: {abAOE.DamageAngleDegrees}", indentLevel); } if (ab.ExtraAOE != null) { AddIndentedString(attackString, "Extra AOE Data", indentLevel); attackString.Append(SerializeAttackData(ab.ExtraAOE, indentLevel + 1)); } return(attackString.ToString()); }
/// <summary> /// Clicked this instance. /// </summary> protected override void Clicked() { base.Clicked(); // Apply skill effect TowerSkillEffect towerSkillEffect = Instantiate(effectPrefab); towerSkillEffect.tower = tower; AttackRanged attackRanged = tower.GetComponentInChildren <AttackRanged>(); if (attackRanged != null) { towerSkillEffect.radiusCollider = attackRanged.GetComponent <CircleCollider2D>(); } else if (tower.range != null) { towerSkillEffect.radiusCollider = tower.range.GetComponent <CircleCollider2D>(); } }
// Use this for initialization void Start() { AttackRanged at = from.GetComponent <AttackRanged>(); enemy = at.GetClosestTarget(); enemy.GetComponent <OrcScript>(); int add = 0; if (enemy.transform.position.x < transform.position.x) { add = -xAdd; } else { add = xAdd; } lastPos = new Vector2(enemy.transform.position.x + add, enemy.transform.position.y - yAdd); }
//private GameObject[] enemies; // Use this for initialization void Start() { attack = GetComponent <AttackRanged>(); Start2(); }
// Use this for initialization void Start() { walkable = GetComponent <Walkable>(); attack = GetComponent <AttackRanged>(); Start2(); }