You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.5 KiB
47 lines
1.5 KiB
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.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.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
|