30 lines
769 B
GDScript3
30 lines
769 B
GDScript3
|
extends Spatial
|
||
|
|
||
|
var road_ray:RayCast
|
||
|
var collider
|
||
|
var road:Road
|
||
|
var road_index:int = 0
|
||
|
|
||
|
puppet var slave_transform:Transform
|
||
|
|
||
|
signal road_entered(road)
|
||
|
|
||
|
|
||
|
func _ready():
|
||
|
road_ray = get_node("ray")
|
||
|
|
||
|
|
||
|
func _physics_process(delta):
|
||
|
if is_network_master():
|
||
|
if road_ray.is_colliding():
|
||
|
if road_ray.get_collider() != collider:
|
||
|
var parent = road_ray.get_collider().get_parent()
|
||
|
if parent is Road && (road == null && road_index == parent.get_index() || road.get_index() == parent.get_index() - 1) && !parent.is_preview():
|
||
|
collider = road_ray.get_collider()
|
||
|
road = parent
|
||
|
road_index = road.get_index()
|
||
|
emit_signal("road_entered",road)
|
||
|
rset_unreliable("slave_transform", get_global_transform())
|
||
|
else:
|
||
|
set_global_transform(slave_transform)
|