Ejemplo n.º 1
0
    override public void UpdateAgent(FlockAgent agent)
    {
        List <Transform> context = agent.GetNearbyObstacles();
        Vector3          move    = behavior.CalculateMove(agent, context);

        agent.Move(move);
    }
Ejemplo n.º 2
0
    // 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);
        }
    }
Ejemplo n.º 3
0
    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);
    }
Ejemplo n.º 4
0
 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);
 }
Ejemplo n.º 5
0
    // 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);
        }
    }