public override TASK_RETURN_STATUS Run(Survivor_AI sAI) { TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED; Blackboard bb = sAI.GetBlackboard(); if (bb.enemyTarget != null) { if (bb.enemyTarget.getEnemyType() == EnemyType.HELLEPHANT || bb.enemyTarget.getEnemyType() == EnemyType.ZOMBEAR) { Vector3 dir = bb.enemyTarget.transform.position - sAI.transform.position; float distFromCrystal = (Vector3.zero - sAI.transform.position).magnitude; float dist = dir.magnitude; if (dist > 5.0f && distFromCrystal < 50.0f) { UnityEngine.AI.NavMeshAgent agent = sAI.GetComponent <UnityEngine.AI.NavMeshAgent>(); agent.destination = bb.enemyTarget.transform.position; output = TASK_RETURN_STATUS.SUCCEED; } } } return(output); }
public override TASK_RETURN_STATUS Run(Survivor_AI sAI) { TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED; Blackboard bb = sAI.GetBlackboard(); if (bb.enemyTarget != null) { Vector3 dir = sAI.transform.position - bb.enemyTarget.gameObject.transform.position; float dist = dir.magnitude; if (dist < 5.0f) { //dir.Normalize(); dir += sAI.transform.position; UnityEngine.AI.NavMeshAgent agent = sAI.GetComponent <UnityEngine.AI.NavMeshAgent>(); agent.destination = dir; //sAI.transform.position += dir; output = TASK_RETURN_STATUS.SUCCEED; } } return(output); }
public override TASK_RETURN_STATUS Run(Survivor_AI sAI) { Blackboard bb = sAI.GetBlackboard(); if (GameManager.GetCurrentWaveNumber() > 4 && GameManager.GetCurrentGold() > 150) { if (bb.ne == null) { bb.ne = new Tower(); GameManager.PurchaseTower(TOWER_TYPE.BULLET_TOWER, TOWER_POSITION.NORTHEAST); } else if (bb.nw == null) { bb.nw = new Tower(); GameManager.PurchaseTower(TOWER_TYPE.BULLET_TOWER, TOWER_POSITION.NORTHWEST); } else if (bb.se == null) { bb.se = new Tower(); GameManager.PurchaseTower(TOWER_TYPE.BULLET_TOWER, TOWER_POSITION.NORTHEAST); } else { GameManager.PurchaseTower(TOWER_TYPE.BULLET_TOWER, TOWER_POSITION.NORTHEAST); bb.sw = new Tower(); } } return(TASK_RETURN_STATUS.SUCCEED); }
public override TASK_RETURN_STATUS Run(Survivor_AI sAI) { TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED; Blackboard bb = sAI.GetBlackboard(); float dist = (sAI.transform.position - bb.moveToPosition).magnitude; if (dist > 1.0f) { UnityEngine.AI.NavMeshAgent agent = sAI.GetComponent <UnityEngine.AI.NavMeshAgent>(); agent.destination = bb.moveToPosition; output = TASK_RETURN_STATUS.FAILED; } else { bb.nodesForAStar.Remove(bb.currNodeToGetTo); if (bb.nodesForAStar.Count > 0) { bb.currNodeToGetTo = bb.nodesForAStar[0]; bb.moveToPosition = bb.currNodeToGetTo.transform.position; } output = TASK_RETURN_STATUS.SUCCEED; } return(output); }
public override TASK_RETURN_STATUS Run(Survivor_AI sAI) { //run A* TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED; Blackboard bb = sAI.GetBlackboard(); if (bb.nodesForAStar.Count <= 0) { GameObject go = GameObject.FindGameObjectWithTag("AStar"); AStarObj aStarObj = go.GetComponent <AStarObj>(); //AStarObj aStarObj = GameObject.FindGameObjectWithTag("AStar").GetComponent<AStarObj>(); //new AStarObj(); aStarObj.RunThroughPath(sAI, bb.startNode, bb.goalNode); if (bb.nodesForAStar.Count > 0) { output = TASK_RETURN_STATUS.SUCCEED; bb.currNodeToGetTo = bb.nodesForAStar[0]; bb.moveToPosition = bb.currNodeToGetTo.transform.position; } } else { output = TASK_RETURN_STATUS.SUCCEED; } return(output); }
Enemy FindClosestHellephantTarget(Survivor_AI sAI) { Enemy target = null; float closestSoFar = Mathf.Infinity; //int worst = 0; List <Enemy> allEnemies = GameManager.getHellephantList(); foreach (Enemy e in allEnemies) { if (e.getState() != EnemyState.DEAD) { float dist = (e.transform.position - sAI.transform.position).magnitude; if (dist < closestSoFar) { target = e; closestSoFar = dist; sAI.GetBlackboard().distFromTarget = closestSoFar; } } } return(target); }
public override TASK_RETURN_STATUS Run(Survivor_AI sAI) { TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED; Enemy e = FindClosestHellephantTarget(sAI); if (e != null) { if (sAI.GetBlackboard().distFromTarget < 20.0f) { sAI.GetBlackboard().enemyTarget = e; output = TASK_RETURN_STATUS.SUCCEED; } } return(output); }
public override TASK_RETURN_STATUS Run(Survivor_AI sAI) { TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED; Enemy closest = FindClosestTarget(sAI); if (closest != null) { sAI.GetBlackboard().enemyTarget = closest; float dist = (closest.transform.position - sAI.transform.position).magnitude; sAI.GetBlackboard().distFromTarget = dist; output = TASK_RETURN_STATUS.SUCCEED; } return(output); }
public override TASK_RETURN_STATUS Run(Survivor_AI sAI) { TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED; Enemy e = FindClosestBearTarget(sAI); if (e != null) { if (sAI.GetBlackboard().distFromTarget < 40.0f && (sAI.GetSurvivor().GetWeapon(WEAPON_TYPE.SNIPER).getAmmo() > 0 || sAI.GetSurvivor().GetWeapon(WEAPON_TYPE.ASSAULT).getAmmo() > 0)) { sAI.GetBlackboard().enemyTarget = e; output = TASK_RETURN_STATUS.SUCCEED; } } return(output); }
public override TASK_RETURN_STATUS Run(Survivor_AI sAI) { TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED; if (sAI.GetBlackboard().nodesForAStar.Count <= 0) { output = TASK_RETURN_STATUS.SUCCEED; } return(output); }
public override TASK_RETURN_STATUS Run(Survivor_AI sAI) { TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED; Blackboard bb = sAI.GetBlackboard(); bb.distFromTarget = GetDistFromTarget(bb.enemyTarget, sAI); output = TASK_RETURN_STATUS.SUCCEED; return(output); }
/* FOR SHOWING OFF ASTAR IN GAME IF TIME *****************************************/ void SearchForLoot() { if (SearchingForLoot == false) // && GameManager.GetCurrentWaveNumber() < 4) { List <Loot> lootlist = GameManager.GetLootList(); if (lootlist.Count > 0) { this.UpdateSurvivorList(); foreach (Loot loot in lootlist) { //if(loot.GetLootType() != LOOT_TYPE.GRENADES || loot.GetLootType() != LOOT_TYPE.NULL) //{ Survivor_AI moving = GetClosestSurvivor(loot.transform.position); PathNode[] nodes = GetClosestPathNode(moving.transform.position, loot.transform.position); if (moving != null) { if (moving.mvmtTracker != Moving.MOVING_ON_ASTAR) { moving.start = nodes[0]; moving.end = nodes[1]; moving.GetBlackboard().startNode = nodes[0]; moving.GetBlackboard().goalNode = nodes[1]; moving.SetMvmtTree(MOVEMENT_TREE.ASTAR); SearchingForLoot = true; moving.mvmtTracker = Moving.MOVING_ON_ASTAR; break; } } //} } } else { Invoke("SearchForLoot", 15.0f); } } }
/* DO NOT USE UNLESS FOR SURE THAT THE ENEMY ORDERING IS EASIEST TO HARDEST IN ENUM*/ public override TASK_RETURN_STATUS Run(Survivor_AI sAI) { TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED; Enemy target = FindClosestWorstTarget(sAI); if (target != null) { sAI.GetBlackboard().enemyTarget = target; output = TASK_RETURN_STATUS.SUCCEED; } return(output); }
public override TASK_RETURN_STATUS Run(Survivor_AI sAI) { TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED; if (sAI.GetSurvivor().GetWeapon(WEAPON_TYPE.GRENADE_LAUNCHER).getAmmo() > 0) { if ((sAI.transform.position - sAI.GetBlackboard().enemyTarget.transform.position).magnitude <= 10) { sAI.GetSurvivor().SwitchWeapons(WEAPON_TYPE.GRENADE_LAUNCHER); output = TASK_RETURN_STATUS.SUCCEED; } } return(output); }
public override TASK_RETURN_STATUS Run(Survivor_AI sAI) { TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED; Blackboard bb = sAI.GetBlackboard(); if (bb.nodesForAStar.Count > 0) { output = TASK_RETURN_STATUS.SUCCEED; } //for breakpointing else { output = TASK_RETURN_STATUS.FAILED; } return(output); }
public override TASK_RETURN_STATUS Run(Survivor_AI sAI) { TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED; WEAPON_TYPE prevType = sAI.GetSurvivor().GetCurrentWeapon().type; sAI.GetSurvivor().SwitchWeapons(WEAPON_TYPE.GRENADE_LAUNCHER); if (sAI.GetSurvivor().GetCurrentWeapon().getAmmo() > 0) { Enemy target = sAI.GetBlackboard().enemyTarget; sAI.GetSurvivor().Fire(target.transform.position + (sAI.GetEnemyHeightOffset() * Vector3.up)); sAI.GetSurvivor().SwitchWeapons(prevType); output = TASK_RETURN_STATUS.SUCCEED; } return(output); }
public override TASK_RETURN_STATUS Run(Survivor_AI sAI) { TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED; Blackboard bb = sAI.GetBlackboard(); if (bb.distFromTarget < 10.0f) { if (sAI.GetSurvivor().GetWeapon(WEAPON_TYPE.SHOTGUN).getAmmo() > 0) { sAI.GetSurvivor().SwitchWeapons(WEAPON_TYPE.SHOTGUN); output = TASK_RETURN_STATUS.SUCCEED; } } return(output); }
public override TASK_RETURN_STATUS Run(Survivor_AI sAI) { TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED; Blackboard bb = sAI.GetBlackboard(); if (bb.distFromTarget <= 25.0f) //&& bb.distFromTarget >= 10.0f) { //if (sAI.GetSurvivor().GetWeapon(WEAPON_TYPE.PISTOL).getAmmo() > 0) //{ sAI.GetSurvivor().SwitchWeapons(WEAPON_TYPE.PISTOL); output = TASK_RETURN_STATUS.SUCCEED; //} } return(output); }
public override TASK_RETURN_STATUS Run(Survivor_AI sAI) { TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED; Enemy target = sAI.GetBlackboard().enemyTarget; if (target != null) { sAI.GetSurvivor().Fire(target.transform.position + (sAI.GetEnemyHeightOffset() * Vector3.up)); output = TASK_RETURN_STATUS.SUCCEED; } return(output); }
public override TASK_RETURN_STATUS Run(Survivor_AI sAI) { TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED; Blackboard bb = sAI.GetBlackboard(); if (GameManager.getZomBunnyList().Count > 5) { if ((FindClosestBunnyTarget(sAI).transform.position - sAI.transform.position).magnitude < 8.0f) { //sAI.gameObject Vector3 normalizedDir = FleeHord(sAI); UnityEngine.AI.NavMeshAgent agent = sAI.GetComponent <UnityEngine.AI.NavMeshAgent>(); agent.destination = normalizedDir + sAI.transform.position; output = TASK_RETURN_STATUS.SUCCEED; } } return(output); }
public override TASK_RETURN_STATUS Run(Survivor_AI sAI) { TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED; Blackboard bb = sAI.GetBlackboard(); if (sAI.mvmtTracker == Moving.MOVING_ON_ASTAR) { return(output); } if (bb.distFromTarget < 35.0f && bb.distFromTarget > 25.0f) { if (sAI.GetSurvivor().GetWeapon(WEAPON_TYPE.ASSAULT).getAmmo() > 0) { sAI.GetSurvivor().SwitchWeapons(WEAPON_TYPE.ASSAULT); output = TASK_RETURN_STATUS.SUCCEED; } } return(output); }
public override TASK_RETURN_STATUS Run(Survivor_AI sAI) { TASK_RETURN_STATUS output = TASK_RETURN_STATUS.FAILED; Blackboard bb = sAI.GetBlackboard(); if (sAI.mvmtTracker == Moving.MOVING_ON_ASTAR) { return(output); } if (bb.distFromTarget > 25.0f && bb.distFromTarget < 37.0f && bb.enemyTarget.getEnemyType() == EnemyType.ZOMBEAR) { if (sAI.GetSurvivor().GetWeapon(WEAPON_TYPE.SNIPER).getAmmo() > 0) //&& sAI.GetBlackboard().enemyTarget.getEnemyType() != EnemyType.ZOMBUNNY) { sAI.GetSurvivor().SwitchWeapons(WEAPON_TYPE.SNIPER); output = TASK_RETURN_STATUS.SUCCEED; } } return(output); }
/*public AStarObj() * { * pathNodeArr = GameObject.FindGameObjectsWithTag("PNode"); * pathNodeList = new List<PathNode>(); * * * foreach (GameObject go in pathNodeArr) * { * PathNode n = go.GetComponent<PathNode>(); * pathNodeList.Add(n); * } * * open = new List<PathNode>(); * closed = new List<PathNode>(); * finalPath = new List<PathNode>(); * }*/ public void RunThroughPath(Survivor_AI sAI, PathNode start, PathNode end) { NullOutParentsAndDist(); CalculatePath(sAI, start, end); sAI.GetBlackboard().nodesForAStar = finalPath; }
public override TASK_RETURN_STATUS Run(Survivor_AI sAI) { sAI.GetBlackboard().WaveNumber++; return(TASK_RETURN_STATUS.SUCCEED); }