Пример #1
0
 public static IEnumerator PatrolUntilSight(DefaultMovement movement, PatrolParameters parameters, Sight sight)
 {
     return(AsyncUtil.Race(new IEnumerator[] {
         PatrolForever(movement, parameters),
         AsyncUtil.WaitUntil(() => sight.GetVisibleObject() != null),
     }));
 }
Пример #2
0
    public static IEnumerator PatrolForever(DefaultMovement movement, PatrolParameters parameters)
    {
        Vector2 direction = Vector2.right;

        while (true)
        {
            if (parameters.leftProbability.GenerateValue())
            {
                direction = new Vector2(direction.y, -direction.x);
            }
            else if (parameters.rightProbability.GenerateValue())
            {
                direction = new Vector2(-direction.y, direction.x);
            }
            else
            {
                direction = -direction;
            }

            yield return(PatrolSegment(movement, direction, parameters));
        }
    }
Пример #3
0
    protected void initializePatrolParameters()
    {
        patrolPar = gameObject.GetComponent <AIParameters> ().patrolParameters;

        float tempROV = 0;

        if (patrolPar != null)
        {
            if (!getRangeOfView(ref tempROV))
            {
                //arbitrario valore di default
                RangeOfView = 3.0f;
            }
            else
            {
                RangeOfView = tempROV;
            }
        }
        else
        {
            Debug.Log("ATTENZIONE - PatrolParameters non trovato perché non è stato trovato AIParameters");
        }
    }
Пример #4
0
    public static IEnumerator PatrolSegment(DefaultMovement movement, Vector2 direction, PatrolParameters parameters)
    {
        movement.TargetVelocity = direction * parameters.patrolSpeed;

        float moveTime = parameters.moveDistance.GenerateValue() / parameters.patrolSpeed;

        yield return(AsyncUtil.Pause(moveTime));

        movement.TargetVelocity = Vector2.zero;

        yield return(AsyncUtil.Pause(parameters.pauseTime.GenerateValue()));
    }