public static IEnumerator PatrolUntilSight(DefaultMovement movement, PatrolParameters parameters, Sight sight) { return(AsyncUtil.Race(new IEnumerator[] { PatrolForever(movement, parameters), AsyncUtil.WaitUntil(() => sight.GetVisibleObject() != null), })); }
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)); } }
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"); } }
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())); }