public void GoTo(NavTarget target) { if (fixTimer == 0) { agent.SetDestination(target.transform.position); } }
// Use this for initialization void Start() { navTargets = new NavTarget[targets.Length]; for (int i = 0; i < targets.Length; i++) { navTargets[i] = new NavTarget(targets[i]); } navCharacters = new NavCharacter[characterControllers.Length]; for (int i = 0; i < characterControllers.Length; i++) { var target = SampleAvailableTarget(); target.reserved = true; navCharacters[i] = new NavCharacter(characterControllers[i], target); } lastUpdate = Time.time; }
private void UpdateControllers() { for (int i = 0; i < navCharacters.Length; i++) { if (Time.time > navCharacters[i].nextChangeTime) { NavTarget nextTarget = SampleAvailableTarget(); navCharacters[i].aiCharacterControl.SetTarget(nextTarget.transform); navCharacters[i].currentTarget.reserved = false; nextTarget.reserved = true; navCharacters[i].currentTarget = nextTarget; navCharacters[i].nextChangeTime = Time.time + Random.Range( positionUpdateIntervalRangeMin, positionUpdateIntervalRangeMax); } else if (navCharacters[i].aiCharacterControl.agent.remainingDistance < distanceThreshold) { navCharacters[i].aiCharacterControl.SetTarget(null); navCharacters[i].aiCharacterControl.transform.rotation = Quaternion.LookRotation(facingDirection); } } }
public NavCharacter(AICharacterControl aiCharacterControl, NavTarget currentTarget) { this.aiCharacterControl = aiCharacterControl; this.nextChangeTime = 0.0f; this.currentTarget = currentTarget; }
public void AddNavTarget(NavTarget argNavTarget) { myNavTargets.Add(argNavTarget); }