override public void UpdateAgent(FlockAgent agent) { List <Transform> context = agent.GetNearbyObstacles(); Vector3 move = behavior.CalculateMove(agent, context); agent.Move(move); }
// Update is called once per frame protected void Update() { // todo: remove //behavior = Object.Instantiate(behaviorTemplate); agents.RemoveAll(list_item => list_item == null); if (behaviorTemplate.name == "null") { return; } foreach (GameObject agent in agents) { FlockAgent flockAgent = agent.GetComponent <FlockAgent>(); /* OnCollisionEnter(Collision collision);*/ List <Transform> context = GetNearbyObjects(flockAgent); // pour demo/debug // agent.GetComponentInChildren<SpriteRenderer>().color = Color.Lerp(Color.white, Color.red, context.Count / 6f); Vector2 move = behavior.CalculateMove(flockAgent, context, this); move *= drivefactor; if (move.sqrMagnitude > squareMaxspeed) { move = move.normalized * maxSpeed; } flockAgent.Move(move); } }
override public void UpdateAgent(FlockAgent agent) { List <Transform> context = agent.GetNearbyObstacles(); Vector3 move = behavior.CalculateMove(agent, context); move *= agent.DriveFactor; if (move.sqrMagnitude > agent.SquareMaxSpeed) { move = move.normalized * agent.MaxSpeed; } agent.Move(move); }
private IEnumerator CollisionAvoidState() //does work { while (lifeStates == LifeStates.CollisionAvoidance) { foreach (FlockAgent agent in flock.agents) { Vector2 velocity = obstacleAvoid.CalculateMove(agent, GetNearbyObjects(agent), flock); agent.Move(velocity); yield return(null); } print("Predator are avoiding obstacles"); } yield return(null); }
// Update is called once per frame void Update() { foreach (FlockAgent agent in agents) { List <Transform> context = GetNearbyObjects(agent); //FOR DEMO ONLY // agent.GetComponentInChildren<SpriteRenderer>().color = Color.Lerp(Color.white, Color.red, context.Count / 6f); Vector2 move = behavior.CalculateMove(agent, context, this); move *= driveFactor; if (move.sqrMagnitude > squareMaxSpeed) { move = move.normalized * maxSpeed; } agent.Move(move); } }