Beispiel #1
0
        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();
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
        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();
        }