// Update is called once per frame void Update() { switch (state) { //Player should run to the furthest goal unless a guard is near case State.TONEWGOAL: float closestGuard = findDistToClosestGuard(); if (closestGuard < 10.0f) { transitionToNearestSafeZone(); } else if (aiSteer.waypointsComplete()) { transitionToNewGoal(); } break; //Player should run towards the closest safeZone case State.SAFEZONE: if (aiSteer.waypointsComplete() && !enteredZone) { enteredZone = true; beginWaitTime = Time.timeSinceLevelLoad; } if (aiSteer.waypointsComplete() && Time.timeSinceLevelLoad - beginWaitTime > SafeZoneWaitTime) { transitionToNewGoal(); enteredZone = false; } break; //player is tagged and out of play case State.TAGGED: if (aiSteer.waypointsComplete()) { GameObject levelManager = GameObject.Find("LevelManager"); levelManager.GetComponent <LevelManager> ().addTagged(); } break; default: print("Weird?"); break; } }
// Update is called once per frame void Update() { switch (state) { case State.A: if (aiSteer.waypointsComplete()) { transitionToStateB(); } break; case State.B: if (aiSteer.waypointsComplete()) { transitionToStateC(); } break; case State.C: if (aiSteer.waypointsComplete()) { transitionToStateD(); } break; case State.D: if (Time.timeSinceLevelLoad - beginWaitTime > waitTime) { transitionToStateE(); } break; case State.E: if (aiSteer.waypointsComplete()) { break; } // transitionToStateA(); break; default: print("Weird?"); break; } }
public override bool IsAt(Vector3 aPosition) { //TODO: this logic should probably be a bit more robust //Maybe check if waypointsComplete() AND we aren't //too far away bool result = navController.waypointsComplete(); return(result); }
// Update is called once per frame void Update() { switch (state) { //Walk from post to post unless they do not have ammo or are near a prisoner case State.WALKAROUND: closestPrisoner = findClosestPrisoner(); if (closestPrisoner != null) { transitionToChase(closestPrisoner); } else if (!armed) { transitionToGetAmmo(); } else if (!isWalking) { int random = Random.Range(0, walkingPoints.Length); aiSteer.setWayPoint(walkingPoints [random]); setSpeed(0.25f); isWalking = true; } if (aiSteer.waypointsComplete()) { isWalking = false; } break; case State.GETAMMO: if (aiSteer.waypointsComplete()) { addAmmo(); transitionToWalkingState(); } break; case State.CHASEPRISONER: //if the closest prisoner has transition to a safe state then we should shoot and walk around if (closestPrisoner != null && closestPrisoner.GetComponent <AIPrisonerController>().isSafe()) { shootBullet(); closestPrisoner = null; state = State.WALKAROUND; break; } else { //if we find a new closer prisoner then we should shoot at the old //one and chase the new closer prisoner GameObject nearPrisoner = findClosestPrisoner(); if (nearPrisoner != closestPrisoner) { transitionToThrowandChase(nearPrisoner); } //Chase the old/current closest prisoner if (closestPrisoner != null) { aiSteer.setWayPoint(closestPrisoner.transform); } } break; default: print("Weird?"); break; } }
// Update is called once per frame void Update() { switch (state) { case State.R: int r = Random.Range(0, 4); if (r == 0) { transitionToStateA(); } else if (r == 1) { transitionToStateB(); } else if (r == 2) { transitionToStateC(); } else if (r == 3) { transitionToStateD(); } break; case State.A: if (aiSteer.waypointsComplete()) { EventManager.TriggerEvent <NpcEvent, Vector3, int>(this.transform.position, 1); transitionToStateR(); } break; case State.B: if (aiSteer.waypointsComplete()) { EventManager.TriggerEvent <NpcEvent, Vector3, int>(this.transform.position, 1); transitionToStateR(); } break; case State.C: if (aiSteer.waypointsComplete()) { EventManager.TriggerEvent <NpcEvent, Vector3, int>(this.transform.position, 1); transitionToStateR(); } break; case State.D: if (aiSteer.waypointsComplete()) { EventManager.TriggerEvent <NpcEvent, Vector3, int>(this.transform.position, 1); transitionToStateR(); } break; default: print("Weird?"); break; } }
// Update is called once per frame void Update() { GameObject target = GameObject.Find("NPC_1"); float p = 15; float d = Vector3.Distance(this.transform.position, target.transform.position); float ballToTargetTime = d / p; Vector3 interceptPoint = target.transform.position + target.transform.forward * targetVel.magnitude * 50 * ballToTargetTime; Vector3 targetPosition = interceptPoint; switch (state) { case State.R: int r = Random.Range(0, 4); //r = 3; if (r == 0) { transitionToStateA(); } else if (r == 1) { transitionToStateB(); } else if (r == 2) { transitionToStateC(); } else if (r == 3) { transitionToStateD(); } break; case State.A: if (aiSteer.waypointsComplete()) { EventManager.TriggerEvent <NpcEvent, Vector3, int>(this.transform.position, 1); transitionToStateR(); } break; case State.B: if (aiSteer.waypointsComplete()) { EventManager.TriggerEvent <NpcEvent, Vector3, int>(this.transform.position, 1); transitionToStateR(); } break; case State.C: if (d <= 1) { aiSteer.clearWaypoints(); transitionToStateR(); } if (aiSteer.waypointsComplete()) { EventManager.TriggerEvent <NpcEvent, Vector3, int>(this.transform.position, 1); transitionToStateR(); } else { aiSteer.setWaypoint(targetPosition); } break; case State.D: aiSteer.setWaypoint(targetPosition); float minD = (float)System.Math.Sqrt(System.Math.Pow(15, 4) / 100); if (Vector3.Distance(this.transform.position, target.transform.position) < minD - 5) //if (Time.timeSinceLevelLoad - beginWaitTime > waitTime) //if (true) { transitionToStateE(); } break; case State.E: aiSteer.mecanimInputForwardSpeedCap = 0; aiSteer.setWaypoint(targetPosition); if (Time.timeSinceLevelLoad - beginWaitTime > waitTime) { print("y tho"); aiSteer.mecanimInputForwardSpeedCap = 1; transitionToStateR(); } break; default: print("Weird?"); break; } }