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); }
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)); }
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 ); }
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); }
public virtual bool check_frequency(Steering_properties properties) { if (properties.time > frequency) { properties.time -= frequency; return(true); } return(false); }
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 )); }
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); }
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); }
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); }
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); }
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); }
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); } }
public override float desire_speed( Steering controller, Transform target, Steering_properties properties) { return(1f); }
public virtual Steering_properties prepare_properties( Steering controller, Steering_properties properties, Transform target) { return(properties); }
public abstract float desire_speed( Steering controller, Transform target, Steering_properties properties);
public abstract Vector3 desire_direction( Steering controller, Transform target, Steering_properties properties);