small racing game im working on
-rw-r--r--ui/assets/ghost.pngbin276 -> 270 bytes
-rw-r--r--ui/map.gd23
2 files changed, 13 insertions, 10 deletions
diff --git a/ui/assets/ghost.png b/ui/assets/ghost.png
index e98f5a1..0fc3941 100644
--- a/ui/assets/ghost.png
+++ b/ui/assets/ghost.png
Binary files differ
diff --git a/ui/map.gd b/ui/map.gd
index 24b44ae..eae9f9e 100644
--- a/ui/map.gd
+++ b/ui/map.gd
@@ -8,7 +8,7 @@ var path := Path2D.new()
@export var player_indicator: Texture
@export var ghost_indicator: Texture
-var followers: Array = [] # Array[[PathFollow2D, Node3D]]
+var followers: Array = [] # Array[[PathFollow2D, Sprite2D, Node3D]]
func _ready() -> void:
clear_points()
@@ -28,33 +28,36 @@ func _ready() -> void:
path.curve = curve
add_child(path)
global_position = -box.position + Vector2(50, 50)
- mkfollower(track.finish, finish_indicator)
+ mkfollower(track.finish, finish_indicator, Color.WHITE, false, true)
func _process(_delta: float) -> void:
for follower in followers:
- if is_instance_valid(follower[1]):
- (follower[0] as PathFollow2D).progress = track.curve.get_closest_offset((follower[1] as Node3D).global_position)
+ if is_instance_valid(follower[2]):
+ (follower[0] as PathFollow2D).progress = track.curve.get_closest_offset((follower[2] as Node3D).global_position)
+ if !follower[0].rotates:
+ (follower[1] as Sprite2D).global_rotation = -follower[2].global_rotation.y - PI/2
func vec(xy: float) -> Vector2:
return Vector2(xy, xy)
-func mkfollower(node: Node3D, tex: Texture, mod := Color.WHITE, back := false):
+func mkfollower(node: Node3D, tex: Texture, mod := Color.WHITE, back := false, rotates := false):
var follower := PathFollow2D.new()
+ follower.rotates = rotates
path.add_child(follower)
var sprite := Sprite2D.new()
sprite.modulate = mod
sprite.texture = tex
follower.add_child(sprite)
if back:
- followers.push_front([follower, node])
+ followers.push_front([follower, sprite, node])
else:
- followers.push_back([follower, node])
+ followers.push_back([follower,sprite, node])
func flatten(v: Vector3) -> Vector2:
return Vector2(v.x, v.z)
-func _on_race_created_car(car) -> void:
- mkfollower(car.ball, player_indicator, player_color)
+func _on_race_created_car(car: Car) -> void:
+ mkfollower(car.car_mesh, player_indicator, player_color)
func _on_race_created_ghost(ghost: GhostCar) -> void:
- mkfollower(ghost, ghost_indicator, Color.WHITE, true)
+ mkfollower(ghost, ghost_indicator, Color(1,1,1,.5), true)