extends Spatial var player:Player var overspeed_rate:float = 0.8 var underspeed_rate:float = 0.8 func _ready(): randomize() func _physics_process(delta): if is_network_master() && player != null: if player.is_out: if player.is_resetable: player.reset() else: if player.get_road() != null: var rate = randf() var road = player.get_road() var distance = player.follow.get_offset() var speed = player.current_speed var has_constrain = false for index in range(road.speed_constrains.size()): var constrain = road.speed_constrains[index] if constrain.x <= distance && constrain.y >= distance: has_constrain = true if constrain.z > 0 && speed < constrain.z && rate > underspeed_rate: player.current_speed += player.speed_factor elif player.current_speed > 0 && rate > overspeed_rate: player.current_speed -= player.speed_factor * player.friction_brake_factor if not has_constrain: if player.current_speed <= player.MAX_SPEED && rate > underspeed_rate: player.current_speed += player.speed_factor elif player.current_speed > 0 && rate > overspeed_rate: player.current_speed -= player.speed_factor * player.friction_brake_factor if player.current_speed < 0: player.current_speed = 0 func set_player(path:String): player = get_node(path) get_node("inventory").set_player(player) func set_overspeed_rate(new_overspeed_rate:float): overspeed_rate = new_overspeed_rate func set_underspeed_rate(new_underspeed_rate:float): underspeed_rate = new_underspeed_rate