public AISubBehaviorData GetCombatAISubBehavior(AIbehaviorData.AiBehaviors pBehavior, int pSubBehaviorIndex = -1) { AISubBehaviorData oSubBehaviorData = null; for (int i = 0; i < AgressiveBehaviors.Count; i++) { if (AgressiveBehaviors[i].beahviorGroup == pBehavior) { ///*** Get Sub behavior index , if not already assigned if (pSubBehaviorIndex == -1) { pSubBehaviorIndex = Random.Range(0, AgressiveBehaviors[i].AISubBehaviors.Count); } for (int x = 0; x < AgressiveBehaviors[i].AISubBehaviors.Count; x++) { oSubBehaviorData = AgressiveBehaviors[i].AISubBehaviors[pSubBehaviorIndex]; } } } return(oSubBehaviorData); }
public void Attack() { CancelInvoke(); isAttacking = true; transform.parent.LookAt(GameController.instance.player); //*** Disable movment ; aiNavigation.canMove = false; if (isMeleeEnemy) { activeSubBehavior = AIController.instance.GetCombatAISubBehavior(AIbehaviorData.AiBehaviors.Attacking_Melee, 0); animations.SetSpecificAnimation(2, meleeAttackAnimation, false); } else { activeSubBehavior = AIController.instance.GetCombatAISubBehavior(AIbehaviorData.AiBehaviors.Attacking_Shooting, 0); animations.SetSpecificAnimation(2, ShootingAnimation, false); if (laserFirePosition != null) { Invoke("OnProjectileAttack", 1.01f); } } Invoke("GetPositionTarget", Random.Range(5f, 8f)); }
public void Move() { if (aiNavigation != null) { CancelInvoke(); if (isMeleeEnemy) { aiNavigation.maxSpeed = walkSpeed; animations.SetSpecificAnimation(2, walkAnimation, true); } else { aiNavigation.maxSpeed = runSpeed; animations.SetSpecificAnimation(2, runAnimation, true); } isMoving = true; aiNavigation.canMove = true; activeSubBehavior = AIController.instance.GetCombatAISubBehavior(AIbehaviorData.AiBehaviors.Moving, 0); Invoke("GetPositionTarget", Random.Range(10f, 13f)); } else { Debug.LogWarning("<><>AI Naviagtion is null !!!!!"); } }
public void SetSubBehaviorData() { //*** There is an option for adign a specific sub behavior by supplying the sub behavior index activeSubBehavior = AIController.instance.GetCombatAISubBehavior(behaviorGroup); }