// Update is called once per frame void Update() { if (!isLit) { Vector3 reflexes = bdi.UpdateBDI(); //Debug.Log(gameObject.name + " my intention is " + (bdi.myIntention == null ? "None" : bdi.myIntention.GetType().ToString())); if (!reflexes.Equals(Vector3.zero) || bdi.myIntention == null) { Vector3 destination = transform.position + reflexes.normalized; //Debug.DrawLine(transform.position, destination, Color.black); rb.velocity = ((destination - transform.position).normalized) * settings.MaxSpeed; transform.rotation = Quaternion.LookRotation(rb.velocity); } else { Vector3 intentionDirection = bdi.myIntention.DefaultState(this).normalized; intentionDirection.y = 0; List <Agent> neighbors = bdi.myPerception.AgentsInSight; List <Agent> relative = bdi.myBelief.MesoInSight(bdi.myPerception); Vector3 flockingDirection = (relative.Count > 0 ? (1 - settings.CoeffMesoFlock) * flocking.Flocking(neighbors) + settings.CoeffMesoFlock * flocking.Flocking(relative) : flocking.Flocking(neighbors)); Vector3 force = (intentionDirection.Equals(Vector3.zero) ? flockingDirection : (1 - settings.CoeffI) * flockingDirection + settings.CoeffI * intentionDirection); Vector3 destination = transform.position + force.normalized; //Debug.DrawLine(transform.position, destination, Color.black); rb.velocity = (force.Equals(Vector3.zero) ? transform.TransformDirection(Vector3.forward) : (destination - transform.position).normalized) * settings.MaxSpeed; transform.rotation = Quaternion.LookRotation(rb.velocity); } } }
// Update is called once per frame void Update() { Vector3 reflexes = bdi.UpdateBDI(); if (!reflexes.Equals(Vector3.zero) || bdi.myIntention == null) { Vector3 destination = transform.position + reflexes.normalized; //Debug.DrawLine(transform.position, destination, Color.black); rb.velocity = ((destination - transform.position).normalized) * settings.MaxSpeed; transform.rotation = Quaternion.LookRotation(rb.velocity); } else { Vector3 intentionDirection = bdi.myIntention.DefaultState(this).normalized; intentionDirection.y = 0; List <Agent> neighbors = bdi.myPerception.AgentsInSight; Vector3 force = (intentionDirection.Equals(Vector3.zero) ? flocking.Flocking(neighbors) : (1 - settings.CoeffI) * flocking.Flocking(neighbors) + settings.CoeffI * intentionDirection); Vector3 destination = transform.position + force.normalized; //Debug.DrawLine(transform.position, destination, Color.black); rb.velocity = (force.Equals(Vector3.zero) ? transform.TransformDirection(Vector3.forward) : (destination - transform.position).normalized) * settings.MaxSpeed; transform.rotation = Quaternion.LookRotation(rb.velocity); } }