public override void OnFirstTreeCall() { Player closestPlayer = null; float closestDistance = float.MaxValue; foreach (Player player in m_AIReference.PlayerList) { float distanceAIToPlayer = (player.transform.position - m_AIReference.transform.position).magnitude; //calculate the direction of the current iterated player to the AI if (distanceAIToPlayer < closestDistance) { //if the player is closer then the previous distance then be sure to remember all of that information closestDistance = distanceAIToPlayer; closestPlayer = player; } } if (closestPlayer != null) { Vector3 directionToTravel = (closestPlayer.transform.position - m_AIReference.transform.position).normalized; Vector3 idealPosition = AIUtilits.CalcClosestPositionOnNavMeshBelowPos(m_AIReference.transform.position - (directionToTravel * m_BackAwayMultiplier)); m_AIReference.Agent.SetDestination(idealPosition); } base.OnFirstTreeCall(); }
public override void OnFirstTreeCall() { Vector3 directionToMove = m_AIReference.transform.right * m_DirectionMultiplier * m_CurrentSideStepDirection; m_CurrentSideStepDirection = m_CurrentSideStepDirection < 0 ? 1.0f : -1.0f; directionToMove = AIUtilits.CalcClosestPositionOnNavMeshBelowPos(directionToMove + m_AIReference.transform.position); m_AIReference.Agent.SetDestination(directionToMove); base.OnFirstTreeCall(); }
public override void OnFirstTreeCall() { float randomXInRoom = Random.Range(0, m_RoomWidth); float randomZInRoom = Random.Range(0, m_RoomLength); Vector3 posInRoom = new Vector3(randomXInRoom, m_RoomHeight, randomZInRoom); posInRoom = m_AIReference.MyIslandRoom.transform.TransformPoint(posInRoom); Vector3 hitPoint = AIUtilits.CalcClosestPositionOnNavMeshBelowPos(posInRoom.x, posInRoom.z, posInRoom.y, m_AIReference.transform.position.y, 5.0f); if (!MathFunc.AlmostEquals(hitPoint, posInRoom)) { m_AIReference.Agent.SetDestination(hitPoint); } base.OnFirstTreeCall(); }