Пример #1
0
        public override Vector3 desire_direction(
            Steering controller, Transform target,
            Steering_properties properties)
        {
            var current_target = properties.waypoints[
                properties.current_waypoint];

            if (loop &&
                properties.current_waypoint >= properties.waypoints.Count - 1)
            {
                properties.current_waypoint = 0;
            }
            if (properties.current_waypoint < properties.waypoints.Count - 1 &&
                Vector3.Distance(
                    current_target, controller.transform.position) < 0.2)
            {
                properties.current_waypoint += 1;
            }

            var direction = seek(controller, current_target);

            direction.Normalize();
            debug(controller.controller, target, direction);
            return(direction.normalized);
        }
Пример #2
0
 public override Steering_properties prepare_properties(
     Steering controller, Steering_properties properties, Transform target)
 {
     properties.radar = new chibi.radar.Radar_box(
         controller.controller.transform, radar_size, radar_rotation, layers);
     return(base.prepare_properties(controller, properties, target));
 }
Пример #3
0
 public override Vector3 desire_direction(
     Steering controller, Transform target,
     Steering_properties properties)
 {
     controller.debug.draw.cube(
         properties.radar.origin.position, properties.radar.size, Color.magenta);
     if (check_frequency(properties))
     {
         properties.radar.ping();
         Vector3 fear_result = Vector3.zero;
         foreach (var hit in properties.radar.hits)
         {
             var item_behavior = hit.transform.GetComponent <chibi.inventory.Item>();
             Debug.Log(item_behavior, item_behavior);
             if (item_behavior.item == item)
             {
                 var fear_vector = flee(controller, hit.transform.position);
                 fear_vector *= (1f / hit.distance) * 5;
                 debug_fear_vector(controller, fear_vector);
                 fear_result += fear_vector;
             }
         }
         properties.last_direction = fear_result;
     }
     debug_seek(controller, properties.last_direction);
     return(properties.last_direction);
     // return seek( controller, properties.last_direction );
 }
Пример #4
0
        public override Vector3 desire_direction(
            Steering controller, Transform target,
            Steering_properties properties)
        {
            float perimeter = helper.shapes.Ellipse.perimeter(
                x_radius, z_radius);

            float delta_period =
                (controller.controller.speed / perimeter);

            float current_period = properties.x;

            current_period += (delta_period * Time.deltaTime) % 1f;
            properties.x    = current_period;

            var desire = helper.shapes.Ellipse.evaluate(
                x_radius, z_radius, current_period);

            desire += target.position;

            var direction = seek(controller, desire);

            direction.Normalize();
            debug(controller.controller, target, direction);
            return(direction);
        }
Пример #5
0
 public virtual bool check_frequency(Steering_properties properties)
 {
     if (properties.time > frequency)
     {
         properties.time -= frequency;
         return(true);
     }
     return(false);
 }
Пример #6
0
 public virtual void debug(
     Steering controller, Transform target,
     Steering_properties properties)
 {
     Debug.Log(string.Format(
                   "[sterring behavior] actuando en '{0}' hacia '{1}'",
                   helper.game_object.name.full(controller), target
                   ));
 }
Пример #7
0
        public override Vector3 desire_direction(
            Steering controller, Transform target,
            Steering_properties properties)
        {
            var direction = seek(controller, target.position);

            direction.Normalize();
            debug(controller.controller, target, direction);
            return(direction.normalized);
        }
Пример #8
0
        public override Steering_properties prepare_properties(
            Steering controller, Steering_properties properties,
            Transform target)
        {
            properties = base.prepare_properties(controller, properties, target);
            var current_position = controller.transform.position;

            Vector3 current_direction_to_orbit =
                current_position - target.position;

            properties.x = helper.shapes.Ellipse.get_progrest(
                current_direction_to_orbit);
            return(properties);
        }
Пример #9
0
        public override Vector3 desire_direction(
            Steering controller, Transform target,
            Steering_properties properties)
        {
            if (properties.time > frequency)
            {
                properties.last_target = find_a_new_target(
                    controller, target);
                properties.time -= frequency;
            }
            var result = seek(controller, properties.last_target);

            debug_seek(controller, result);
            return(result);
        }
Пример #10
0
 public override Vector3 desire_direction(
     Steering controller, Transform target,
     Steering_properties properties)
 {
     controller.debug.draw.cube(
         properties.radar.origin.position, properties.radar.size, Color.magenta);
     if (check_frequency(properties))
     {
         properties.radar.ping();
         Bounds bound = new Bounds(controller.transform.position, Vector3.zero);
         foreach (var hit in properties.radar.hits)
         {
             bound.Encapsulate(hit.transform.position);
         }
         properties.last_direction = seek(controller, bound.center);
     }
     debug_seek(controller, properties.last_direction);
     return(properties.last_direction);
 }
Пример #11
0
        public override Steering_properties prepare_properties(
            Steering controller, Steering_properties properties,
            Transform target)
        {
            properties = base.prepare_properties(
                controller, properties, target);
            chibi.path.Path_behaviour path = target.GetComponent <
                chibi.path.Path_behaviour>();
            properties.current_waypoint = 0;
            properties.waypoints        = path.path.bake_points;

            var handlers = target.GetComponentsInChildren <Handler_behaviour>();

            foreach (var handler in handlers)
            {
                handler.add(controller.controller);
            }
            return(properties);
        }
Пример #12
0
        public override float desire_speed(
            Steering controller, Transform target,
            Steering_properties properties)
        {
            var distance = target.position - controller.transform.position;

            if (distance.magnitude < deacceleration_distant)
            {
                float speed = (float)System.Math.Round(
                    distance.magnitude / deacceleration_distant);
                if (speed < 0.1f)
                {
                    return(0f);
                }
                return(speed);
            }
            else
            {
                return(1f);
            }
        }
Пример #13
0
 public override float desire_speed(
     Steering controller, Transform target,
     Steering_properties properties)
 {
     return(1f);
 }
Пример #14
0
 public virtual Steering_properties prepare_properties(
     Steering controller, Steering_properties properties, Transform target)
 {
     return(properties);
 }
Пример #15
0
 public abstract float desire_speed(
     Steering controller, Transform target,
     Steering_properties properties);
Пример #16
0
 public abstract Vector3 desire_direction(
     Steering controller, Transform target,
     Steering_properties properties);