void Damage(AttackArea.AttackInfo attackInfo) { transform.root.SendMessage ("Damage",attackInfo); if (transform.root.tag == "Boss") { transform.root.gameObject.SendMessage ("Damage", attackInfo); } }
public Combat(string characterName, GameObject character, string characterWeapon) { this.characterName = characterName; this.character = character; this.characterWeapon = characterWeapon; health = GameObject.Find("Databases").GetComponent <StatDB> ().getValue(this.characterName, "Health"); maxHealth = health; mana = GameObject.Find("Databases").GetComponent <StatDB> ().getValue(this.characterName, "Mana"); maxMana = mana; defense = GameObject.Find("Databases").GetComponent <StatDB> ().getValue(this.characterName, "Defense"); damage = (int)(GameObject.Find("Databases").GetComponent <WeaponDB> ().getValue(this.characterWeapon, "Damage")); attackDelay = (int)(GameObject.Find("Databases").GetComponent <WeaponDB> ().getValue(this.characterWeapon, "Speed")); float attackWidth = GameObject.Find("Databases").GetComponent <WeaponDB> ().getValue(characterWeapon, "Width"); float attackRange = GameObject.Find("Databases").GetComponent <WeaponDB> ().getValue(characterWeapon, "Length"); attackArea = new AttackArea(this.character, characterName, attackWidth, attackRange); characterWidth = this.character.GetComponent <BoxCollider2D> ().bounds.extents.x * 2; characterHeight = this.character.GetComponent <BoxCollider2D> ().bounds.extents.y * 2; attackTimer = new UtilTimer(1.5f, 1.5f); attackDelayTimer = new UtilTimer(1.5f, 1.5f); // use attackDelay = (int)(GameObject.Find ("Databases").GetComponent<WeaponDB> ().getValue (this.characterWeapon, "Speed")); combatCooldownTimer = new UtilTimer(1.5f, 1.5f); regenerationTimer = new UtilTimer(1.5f, 1.5f); }
private bool ShouldStunPlayer(AttackArea attackArea) { bool chanceToRandomlyHurtPlayer = attackArea.GetComponentInParent <Transform>().tag == "Boss" || random.Next() > 0.5; bool isAttackKnife = attackArea && attackArea.GetAttackType() == Weapon.AttackType.Knife; return(chanceToRandomlyHurtPlayer && !isAttackKnife); }
protected virtual void StandardAttack(int damageToDeal) { AttackArea attack = Instantiate(attackArea, attackPoint.position, Quaternion.identity, transform).GetComponent <AttackArea>(); attack.Damage = damageToDeal; attack.KnockbackDirection = xMovementDirection; attack.KnockbackPower = knockbackPower; attack.KnockbackDuration = knockbackDuration; attack.layerToIgnore = gameObject.layer; Invoke("ToggleAttackAnimation", 0); Invoke("ToggleAttackAnimation", 0.25f); //Debug.DrawRay(transform.position, xMovementDirection * attackRange, Color.blue, 0.5f); //RaycastHit2D[] newHits = Physics2D.RaycastAll(transform.position, xMovementDirection, attackRange, enemyLayer); //List<RaycastHit2D> beenHits = new List<RaycastHit2D>(); //foreach (RaycastHit2D newHit in newHits) //{ // foreach (RaycastHit2D beenHit in beenHits) // { // if (newHit == beenHit) // { // break; // } // } // beenHits.Add(newHit); // newHit.collider.GetComponent<Character2D>().TakeDamage(damage); // newHit.collider.GetComponent<Character2D>().Knockback(new Vector2(xMovementDirection.x, 0.5f), knockbackPower, knockbackDuration); // Debug.Log(damage + " damage dealt to " + newHit.collider.gameObject.name + "!"); //} }
private void OnTriggerEnter(Collider other) { //AttackAreaのついている攻撃が来たら属性を調べる if (other.gameObject.GetComponent <AttackArea>()) { AttackMagic = other.gameObject.GetComponent <AttackArea>(); //プレイヤーの攻撃でしか壊せない if (AttackMagic.aligment == aligment.player) { Attackele = AttackMagic.element.type; //全ての攻撃で壊れるbool if (ALL || Attackele == Weakele) { GetDamage(AttackMagic.Damage); if (_HP <= 0) { SEManager.SetSE(destSE); //HPを減らす攻撃であれば壊れる Destroy(gameObject); } } } } }
public override IEnumerator DoTurn() { List <Cell> cells = new List <Cell>(); foreach (Cell c in MoveArea) { cells.Add(c); } foreach (Cell c in AttackArea) { cells.Add(c); } FindTarget(cells.ToArray()); if (Target != null) { ChooseWeapon(); yield return(Fighter.ApplyPath(FindPath(), GameSettings.DoMoveAnimation)); TargetData(); if (Target != null && AttackArea.Contains(Map.UnitTile(Target))) { yield return(new UnityEngine.WaitForSeconds(1)); Attack(); } } }
element Weakele; //壁の弱点属性 private void OnTriggerEnter(Collider other) { Debug.Log("gethit"); //AttackAreaのついている攻撃が来た if (other.gameObject.GetComponent <AttackArea>()) { AttackMagic = other.gameObject.GetComponent <AttackArea>(); //プレイヤーの攻撃でしか壊せない if (AttackMagic.aligment == aligment.player) { //全ての攻撃で壊れるbool if (All) { HP -= AttackMagic.Damage; if (HP <= 0) { //HPを減らす攻撃であれば壊れる Destroy(gameObject); } } //壁の弱点と攻撃の属性があっていれば else if (AttackMagic.element.type == Weakele) { HP -= AttackMagic.Damage; if (HP <= 0) { //HPを減らす攻撃であれば壊れる Destroy(gameObject); } } } } }
void Start() { anim = GetComponent <Animator>(); agent = GetComponent <NavMeshAgent>(); Range = attackArea.GetComponent <AttackArea>(); Range.Damage = Damage; attackArea.SetActive(false); }
public override IEnumerator DoTurn() { FindTarget(AttackArea.ToArray()); ChooseWeapon(); Attack(); yield return(null); }
public void Attack() { if (this.targetEnemy != null) { //Attack Reach. If a nearby enemy game unit is within attack range, engage and attack. AttackArea area = this.GetComponentInChildren <AttackArea>(); if (area != null) { if (area.enemiesInAttackRange.Contains(this.targetEnemy)) { if (this.attackCooldownCounter <= 0f) { CmdAttack(this.targetEnemy.gameObject, this.unitAttributes.attackCooldownPrefabList[this.level]); GameMetricLogger.Increment(GameMetricOptions.Attacks); GameMetricLogger.Increment(GameMetricOptions.AttackTime); } } else if (area.enemiesInAttackRange.Count > 0) { this.targetEnemy = area.enemiesInAttackRange[0]; } GameMetricLogger.Increment(GameMetricOptions.BattleEngagementTime); } } else if (this.targetAIEnemy != null) { AttackArea area = this.GetComponentInChildren <AttackArea>(); if (area != null) { if (area.otherEnemies.Contains(this.targetAIEnemy)) { if (this.attackCooldownCounter <= 0f) { if (this.unitAttributes.attackCooldownPrefabList.Count > 0) { AttackAI(this.targetAIEnemy.gameObject, this.unitAttributes.attackCooldownPrefabList[this.level]); } else { AttackAI(this.targetAIEnemy.gameObject, 1f); } GameMetricLogger.Increment(GameMetricOptions.Attacks); GameMetricLogger.Increment(GameMetricOptions.AttackTime); } } else if (area.otherEnemies.Count > 0) { this.targetAIEnemy = area.otherEnemies[0]; } GameMetricLogger.Increment(GameMetricOptions.BattleEngagementTime); } } }
private void Start() { rb = GetComponent <Rigidbody>(); Range = attackArea.GetComponent <AttackArea>(); Range.aligment = aligment.enemy; Range.element = null; Range.Damage = Damage; attackArea.SetActive(false); }
private void Start() { anim = GetComponent <Animator>(); Range = attackArea.GetComponent <AttackArea>(); Range.aligment = aligment.enemy; Range.element = null; Range.Damage = Damage; attackArea.SetActive(false); }
void Damage(AttackArea.AttackInfo attackInfo) { status.HP -= attackInfo.attackPower; if (status.HP <= 0) { status.HP = 0; // 체력이 0이므로 사망 스테이트로 전환한다. ChangeState(State.Died); } }
protected virtual void HeavyAttack(int damageToDeal) { AttackArea attack = Instantiate(attackArea, attackPoint.position, Quaternion.identity, transform).GetComponent <AttackArea>(); attack.Damage = damageToDeal * 2; attack.KnockbackDirection = xMovementDirection; attack.KnockbackPower = knockbackPower * 2; attack.KnockbackDuration = knockbackDuration * 1.5f; attack.gameObject.GetComponent <SpriteRenderer>().color = Color.red; }
// Use this for initialization protected void Start() { className = this.GetType().ToString(); rb = GetComponent <Rigidbody2D> (); sr = GetComponent <SpriteRenderer> (); colli = GetComponent <Collider2D> (); halfWidth = colli.bounds.extents.x; halfHeight = colli.bounds.extents.y; // build animations anim = GetComponent <Animator> (); AnimationClip[] clips = anim.runtimeAnimatorController.animationClips; foreach (AnimationClip clip in clips) { animationClipTable [clip.name] = clip; } // build actions //actionTable [Action.Type.Attack] = new AttackAction (this); actionTable [Action.Type.Attack] = new AttackShootAction(this); ((AttackShootAction)actionTable [Action.Type.Attack]).SetSprite("Graphic/arrow"); //actionTable [Action.Type.JumpAttack] = new JumpAttackAction (this); actionTable [Action.Type.JumpAttack] = new JumpShootAttackAction(this); ((JumpShootAttackAction)actionTable [Action.Type.JumpAttack]).SetSprite("Graphic/arrow"); //actionTable [Action.Type.Defend] = new RushAction (this); //actionTable [Action.Type.Defend].SetNextAction (Action.Type.Attack); actionTable [Action.Type.Damage] = new DamageAction(this); actionTable [Action.Type.Climb] = new ClimbAction(this); actionTable [Action.Type.Dead] = new DeadAction(this); //actionTable [Action.Type.Rush] = new RushAction (this); // wall jump // edge + jump -> climb up // combo // pick up //actionTable [Action.Type.Attack].SetPlaySpeedByDuration (1f); // default attack AttackArea aa = GetComponentInChildren <AttackArea> (); aa.SetAttacker(this); aa.SetAttack(new SimpleAttack(10)); info = GetComponent <CharacterInfo> (); info.owner = this; info.HPBar = transform.Find("HP/Cur HP").gameObject; SimpleAIController simpleAI = gameObject.AddComponent <SimpleAIController>(); simpleAI.SetReceiver(this); simpleAI.transform.parent = transform; AI = simpleAI; }
private void Start() { agent = GetComponent <NavMeshAgent>(); anim = GetComponent <Animator>(); Range = attackArea.GetComponent <AttackArea>(); Range.aligment = aligment.enemy; Range.element = null; Range.Damage = Damage; attackArea.SetActive(false); agent.speed = WalkSpeed; }
void Start() { anim = GetComponent <Animator>(); agent = GetComponent <NavMeshAgent>(); //CapsuleColl = GetComponent<CapsuleCollider>(); //EneCon = GetComponent<EnemyController>(); Range = attackArea.GetComponent <AttackArea>(); Range.Damage = Damage.GetValue(); agent.speed = speed; attackArea.SetActive(false); }
void Damage(AttackArea.AttackInfo attackInfo) { // 효과 발생. GameObject effect = Instantiate ( hitEffect, transform.position,Quaternion.identity ) as GameObject; effect.transform.localPosition = transform.position + new Vector3(0.0f, 0.5f, 0.0f); Destroy(effect, 0.3f); if (networkView.isMine) DamageMine(attackInfo.attackPower); else networkView.RPC("DamageMine",networkView.owner,attackInfo.attackPower); }
protected void Start() { base.Start(); actionTable [Action.Type.Attack] = new AttackAction(this); actionTable [Action.Type.JumpAttack] = new JumpAttackAction(this); actionTable [Action.Type.Defend] = new DefendAction(this); AttackArea aa = GetComponentInChildren <AttackArea> (); aa.SetAttacker(this); aa.SetAttack(new SimpleAttack(20)); }
void GetAtkData() { AtkData = Fighter.Unit.inventory.GetAttackData(Fighter); if (AtkData != null) { foreach (Cell c in Map.GetExtendedArea(MoveArea.ToArray(), AtkData)) { AttackArea.Add(c); } } }
private void OnCollision(Collider2D collider) { if (!_characterState.CanBeStunned()) // || _knockdown.state != KnockDown.State.Null || (tag == "Player" && _jump.state != Jump.State.Null)) { return; } AttackArea attackArea = collider.GetComponent <AttackArea>(); if (attackArea && attackArea.IsShootType()) { return; } if (collider.tag == "Damage") { if (tag != "Player" || ShouldStunPlayer(attackArea)) { // only 50% chance to stun if it's Abe Attack attack = collider.GetComponentInParent <Attack>(); float directionMod = (collider.GetComponentInParent <Movement>().direction == Movement.Direction.Right ? 1f : -1f); if (attack.attackState == Attack.State.Heavy) { if (attack.getAttackHand() == Attack.Hand.Right) { GetStunned(attack.GetStunAmount(), attack.GetKnockbackAmount(), directionMod, Direction.Right, Power.Heavy); } else { GetStunned(attack.GetStunAmount(), attack.GetKnockbackAmount(), directionMod, Direction.Left, Power.Heavy); } } else // if (attack.attackState == Attack.State.Light) { if (attack.getAttackHand() == Attack.Hand.Right) { GetStunned(attack.GetStunAmount(), attack.GetKnockbackAmount(), directionMod, Direction.Right, Power.Light); } else { GetStunned(attack.GetStunAmount(), attack.GetKnockbackAmount(), directionMod, Direction.Left, Power.Light); } } } if (tag == "Player") { GetComponent <Attack>().SetState(Attack.State.Null); } } }
void Damage(AttackArea.AttackInfo attackInfo) { GameObject effect = Instantiate(hitEffect, transform.position, Quaternion.identity) as GameObject; effect.transform.localPosition = transform.position + new Vector3(0.0f, 0.5f, 0.0f); Destroy(effect, 0.3f); status.HP -= attackInfo.attackPower; if (status.HP <= 0) { status.HP = 0; // 체력이 0이므로 사망 스테이트로 전환한다. ChangeState(State.Died); } }
private SaveController saveController; // Сохраненные параметры void Start() { thisSpriteRender = GetComponent <SpriteRenderer>(); thisRigidbody = GetComponent <Rigidbody2D>(); thisTransform = transform; thisAnimator = GetComponent <Animator>(); playerHp = GetComponent <CharacterHp>(); attackArea = FindObjectOfType <AttackArea>(); saveController = FindObjectOfType <SaveController>(); maxSpeed = saveController.sv.speedPlayer; jumpForce = saveController.sv.jumpForcePlayer; attackDamage = saveController.sv.attackDamagePlayer; }
public void Damage(AttackArea.AttackInfo attackInfo) { if (gameRuleCtrl.gameClear) { return; } SetAttackTarget(attackInfo.attacker); GameObject effect = Instantiate(hitEffect, transform.position, Quaternion.identity) as GameObject; effect.transform.localPosition = transform.position + new Vector3(0.0f, 0.5f, 0.0f); Destroy(effect, 0.3f); status.HP -= attackInfo.attackPower; if (status.HP <= 0) { status.HP = 0; // 体力0なので死亡ステートへ. ChangeState(State.Died); } }
void Start() { assetsManager = FindObjectOfType <AssetsManager>(); stageManager = FindObjectOfType <StageManager>(); cameraController = FindObjectOfType <CameraController>(); rigid2D = GetComponent <Rigidbody2D>(); animator = GetComponent <Animator>(); attackArea = FindObjectOfType <AttackArea>(); moveLeft = false; moveRight = false; // 攻撃コライダを無効化 attackArea.GetComponent <BoxCollider2D>().enabled = false; // 開始位置を保持 initPosition = transform.position; // 死亡フラグを初期値に戻す died = false; }
public override void _Ready() { base._Ready(); // Initialize and mount the state machine. this._stateMachine = new StateMachine <Player>(this, StatesIndex.Idle); this._stateMachine .AddState(new PlayerAttackState()) .AddState(new PlayerMovingState()) .AddState(new PlayerIdleState()); this._attackArea = GetNode <AttackArea>("./AttackArea"); this._attackArea.SetWeapon(new Sword(10, 10)); // Get Animation components (nodos). this._animationTree = GetNode <AnimationTree>("./AnimationTree"); this._animationTree.Active = true; this._animationNodeStateMachinePlayback = (AnimationNodeStateMachinePlayback)this._animationTree.Get("parameters/playback"); }
private void Start() { coll = GetComponent <Collider2D>(); rb = GetComponent <Rigidbody2D>(); animator = GetComponent <Animator>(); sr = GetComponent <SpriteRenderer>(); enemyBase = GameManager.Instance.enemyBase; currentHealth = GetComponent <Health>().HealthCount; attackArea = GetComponent <AttackArea>(); EventManager.Instance.AddListener(EVENT_TYPE.HEALTH_CHANGE, OnEvent); GameManager.Instance.enemyDangerContainer.Add(gameObject, dangerClass); startPosition = transform.position; leftBorderPosition = leftBorder.transform.position; rightBorderPosition = rightBorder.transform.position; isDamaged = false; //isRised = false; }
private void OnTriggerEnter(Collider other) { //AttackAreaのついている攻撃が来たら if (other.gameObject.GetComponent <AttackArea>()) { AttackMagic = other.gameObject.GetComponent <AttackArea>(); //プレイヤーの攻撃でしか壊せない if (AttackMagic.aligment == aligment.player) { GetDamage(AttackMagic.Damage); if (HP <= 0) { foreach (GameObject obj in WallList) { Destroy(obj); } //HPを減らす攻撃であれば壊れる SEManager.SetSE(SE); Destroy(gameObject); } } } }
void Damage(AttackArea.AttackInfo attackInfo) { if( this.hitEffect != null ) { // Effect. GameObject effect = Instantiate (this.hitEffect, transform.position, Quaternion.identity) as GameObject; effect.transform.localPosition = transform.position + new Vector3 (0.0f, 0.5f, 0.0f); Destroy (effect, 0.3f); } // Calculate HP. status.HP -= attackInfo.attackPower; if (status.HP <= 0) { status.HP = 0; ChangeState(EnemyState.Died); } }
private void Awake() { _rigidbody = GetComponent <Rigidbody2D>(); _attackArea = GetComponentInChildren <AttackArea>(); SetAnimator(GetComponent <Animator>()); }
// Calculate a Damage. void Damage( AttackArea.AttackInfo attackInfo ) { this.status.HP -= attackInfo.attackPower; if (this.status.HP <= 0) { this.status.HP = 0; } this.gameRuleCtrl.UpdatePlayerHP (this.status.HP); if( this.status.HP == 0 ) { this.ChangePlayerState( PlayerState.PlayerDied ); } }
void Damage(AttackArea.AttackInfo attackInfo) { transform.root.SendMessage ("Damage",attackInfo); }
private void OnCollision(Collider2D collider) { AttackArea attackArea = collider.GetComponent <AttackArea>(); if (attackArea && attackArea.IsShootType()) { return; } if (collider.tag == "Damage") { damageAmount = collider.transform.GetComponentInParent <Attack>().GetDamageAmount(); ExecuteDamage(damageAmount, collider); if (name.Contains("Bear")) { if (UnityEngine.Random.value < 0.33f) { SoundPlayer.Play("Damage React Bear"); } } else if (name.Contains("Officer-Boss")) { SoundPlayer.Play("Battlefield Boss Hit"); } else if (name.Contains("RobertELee")) { SoundPlayer.Play("Lee Hit"); } //else if (name.Contains("Officer")) // SoundPlayer.Play("Officer Hit"); else if (name.Contains("Rifleman")) { SoundPlayer.Play("Rifleman Hit"); } else if (name.Contains("Bushwhacker")) { SoundPlayer.Play("BushWhacker Hit"); } else if (name.Contains("Officer")) { SoundPlayer.Play("Officer Hit"); } else if (name.Contains("Woman")) { SoundPlayer.Play("Woman Hit"); } else if (tag != "Player") { SoundPlayer.Play("Damage React Light"); } if (attackArea) { if (attackArea.GetAttackState() == Attack.State.Heavy) { if (attackArea.GetAttackType() == Weapon.AttackType.Swing) { SoundPlayer.Play("Heavy Axe Impact 1"); SoundPlayer.Play("Heavy Axe Impact 1.1"); } else if (attackArea.GetAttackType() == Weapon.AttackType.Melee) { SoundPlayer.Play("Heavy Punch Impact 1"); SoundPlayer.Play("Heavy Punch Impact 1.2"); SoundPlayer.Play("Heavy Punch Impact 1.3"); } else if (attackArea.GetAttackType() == Weapon.AttackType.Slash) { SoundPlayer.Play("Saber Impact"); } else if (attackArea.GetAttackType() == Weapon.AttackType.Knife) { SoundPlayer.Play("Knife Impact"); } } else { if (attackArea.GetAttackType() == Weapon.AttackType.Swing) { if (attackArea.GetAttackChainNumber() >= 2) { SoundPlayer.Play("Light Axe Impact 3"); } else if (attackArea.GetAttackChainNumber() >= 1) { SoundPlayer.Play("Light Axe Impact 2"); } else { SoundPlayer.Play("Light Axe Impact 1"); } } else if (attackArea.GetAttackType() == Weapon.AttackType.Melee) { SoundPlayer.Play("Light Punch Impact"); } else if (attackArea.GetAttackType() == Weapon.AttackType.Slash) { SoundPlayer.Play("Saber Impact"); } else if (attackArea.GetAttackType() == Weapon.AttackType.Knife) { SoundPlayer.Play("Knife Impact"); } } } } }
public void Update() { //Because the game is now spawning objects from the player-owned objects (spawning from NetworkManager-spawned objects), don't check for //isLocalPlayer, but instead check to see if the clients have authority over the non-player owned objects spawned from the NetworkManager-spawned objects. //Wordy, I know... if (!this.hasAuthority) { return; } if (this.isSplitting || this.isMerging) { return; } //Simple, "quick," MOBA-style controls. Hence, the class name. if (this.isSelected) { this.selectionRing.SetActive(true); Vector3 screenPoint = Camera.main.ScreenToViewportPoint(Input.mousePosition); if (!MinimapStuffs.Instance.minimapCamera.rect.Contains(screenPoint)) { if (Input.GetMouseButtonDown(1)) { CastRay(false, Input.mousePosition, null); } } } else { this.selectionRing.SetActive(false); } //Obtaining the nav mesh agent here for future uses. NavMeshAgent agent = this.GetComponent <NavMeshAgent>(); //Non-directed, self-defense LineOfSight sight = this.GetComponentInChildren <LineOfSight>(); AttackArea area = this.GetComponentInChildren <AttackArea>(); if (!this.isDirected || agent.remainingDistance < 0.5f) { //Line of Sight. Detects if there are nearby enemy game units, and if so, follow them to engage in battle. if (sight != null && area != null) { //There are 4 cases when detecting an enemy in both areas, line of sight and attack range. I had to consider each of the cases //in order to ease the Console error gods... // (12/5/2015) Now there are 8 cases in total. Consider AI players. GameUnit sightGameUnit = null; if (sight.enemiesInRange.Count > 0) { foreach (GameUnit temp in sight.enemiesInRange) { if (temp != null) { sightGameUnit = temp; break; } } } GameUnit attackGameUnit = null; if (sight.enemiesInRange.Count > 0) { foreach (GameUnit temp in sight.enemiesInRange) { if (temp != null) { attackGameUnit = temp; break; } } } AIUnit sightAiUnit = null; if (sight.otherEnemies.Count > 0) { foreach (AIUnit temp in sight.otherEnemies) { if (temp != null) { sightAiUnit = temp; break; } } } AIUnit attackAiUnit = null; if (sight.otherEnemies.Count > 0) { foreach (AIUnit temp in sight.otherEnemies) { if (temp != null) { attackAiUnit = temp; break; } } } if (sightGameUnit != null && attackGameUnit != null) { SetTargetEnemy(this.gameObject, sightGameUnit.gameObject, attackGameUnit.gameObject); CmdSetTargetEnemy(this.gameObject, sightGameUnit.gameObject, attackGameUnit.gameObject); } else if (sightGameUnit != null && attackGameUnit == null) { SetTargetEnemy(this.gameObject, sightGameUnit.gameObject, sightGameUnit.gameObject); CmdSetTargetEnemy(this.gameObject, sightGameUnit.gameObject, sightGameUnit.gameObject); } else if (sightGameUnit == null && attackGameUnit != null) { SetTargetEnemy(this.gameObject, attackGameUnit.gameObject, attackGameUnit.gameObject); CmdSetTargetEnemy(this.gameObject, attackGameUnit.gameObject, attackGameUnit.gameObject); } else { SetTargetEnemy(this.gameObject, this.gameObject, this.gameObject); CmdSetTargetEnemy(this.gameObject, this.gameObject, this.gameObject); } if (sightAiUnit != null && attackAiUnit != null) { SetTargetAIEnemy(this.gameObject, sightAiUnit.gameObject, attackAiUnit.gameObject); } else if (sightAiUnit != null && attackAiUnit == null) { SetTargetAIEnemy(this.gameObject, sightAiUnit.gameObject, sightAiUnit.gameObject); } else if (sightAiUnit == null && attackAiUnit != null) { SetTargetAIEnemy(this.gameObject, attackAiUnit.gameObject, attackAiUnit.gameObject); } else { SetTargetAIEnemy(this.gameObject, this.gameObject, this.gameObject); } } } //Start attacking. Attack(); //Updating status. UpdateStatus(); //Keeping track of whether the game unit is carrying out a player's command, or is carrying out self-defense. if (agent != null && agent.ReachedDestination()) { this.isDirected = false; } }