Ejemplo n.º 1
0
    public Vector3 GetNextWaypoint(WaypointIterator iterator)
    {
        var atArrayStart = iterator.index == 0;
        var atEndOfArray = iterator.index == waypoints.Count - 1;

        if (pathIsRingLoop && atEndOfArray)
        {
            iterator.index = 0;
        }
        else if (!pathIsRingLoop && atEndOfArray)
        {
            iterator.returning = true;
            iterator.index    -= 1;
        }
        else if (!pathIsRingLoop && iterator.returning && atArrayStart)
        {
            iterator.returning = false;
            iterator.index    += 1;
        }
        else if (!pathIsRingLoop && iterator.returning)
        {
            iterator.index -= 1;
        }
        else
        {
            iterator.index += 1;
        }
        if (waypoints[iterator.index].pause > 0f)
        {
            iterator.pause = waypoints[iterator.index].pause;
        }
        return(waypoints[iterator.index].point + transform.position);
    }
Ejemplo n.º 2
0
        private void Start()
        {
            character = GetComponent <Character>();
            Health    = GetComponent <Health>();
            Health.onDeathListeners += OnDeath;
            player             = FindObjectOfType <Player>();
            weaponSystem       = GetComponent <WeaponSystem>();
            currentWeaponRange = weaponSystem.CurrentWepaon.GetAttackRange();
            originalPosition   = transform.position;

            if (patrolPath)
            {
                iterator = patrolPath.GetNewIterator();
                state    = States.Patroling;
                character.SetTarget(patrolPath.GetFirstWaypoint());
                Patrol();
            }
        }
Ejemplo n.º 3
0
 public bool AtWaypoint(WaypointIterator iterator, Vector3 agentPosition)
 {
     // We don't care about the y value, that is handled by nav mesh well enough
     agentPosition.y = waypoints[iterator.index].point.y;
     return(Vector3.Distance(agentPosition, waypoints[iterator.index].point + transform.position) <= precesionThreshold);
 }