Add experimental road generation (generated by deepseek)
This commit is contained in:
parent
7958bd288f
commit
5bf9ea473c
8 changed files with 97 additions and 1 deletions
45
scripts/road_manager.gd
Normal file
45
scripts/road_manager.gd
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
extends Node3D
|
||||
|
||||
@export var road_scene: PackedScene = preload("res://scenes/road.tscn")
|
||||
@export var initial_roads := 5 # Number of roads to spawn on each side
|
||||
@export var road_spacing := 20.0 # Exact spacing from original scene
|
||||
@export var spawn_distance := 50.0 # Distance ahead to spawn new roads
|
||||
|
||||
var player: Node3D
|
||||
var last_spawn_x := 0.0
|
||||
|
||||
func _ready():
|
||||
# Use call_deferred to ensure player exists
|
||||
call_deferred("initialize_player")
|
||||
|
||||
func initialize_player():
|
||||
player = get_tree().get_first_node_in_group("player")
|
||||
if not player:
|
||||
push_error("Player not found in 'player' group!")
|
||||
return
|
||||
|
||||
# Initialize starting roads relative to player position
|
||||
var start_x = floor(player.global_position.x / 20.0) * 20.0
|
||||
for i in range(-initial_roads, initial_roads):
|
||||
spawn_road(start_x + i * 20.0)
|
||||
last_spawn_x = start_x + initial_roads * 20.0
|
||||
|
||||
func _process(_delta):
|
||||
if not player:
|
||||
return # Skip if player not found
|
||||
|
||||
# Check road spawning based on player's X position
|
||||
if player.global_position.x > last_spawn_x - spawn_distance:
|
||||
spawn_road(last_spawn_x + 20.0)
|
||||
last_spawn_x += 20.0
|
||||
|
||||
func spawn_road(x_position: float):
|
||||
var new_road = road_scene.instantiate()
|
||||
# Add proper positioning based on original road spacing
|
||||
new_road.global_transform = Transform3D(
|
||||
Vector3(2, 0, 0),
|
||||
Vector3(0, 2, 0),
|
||||
Vector3(0, 0, 2),
|
||||
Vector3(x_position, 0, 0)
|
||||
)
|
||||
add_child(new_road)
|
||||
Loading…
Add table
Add a link
Reference in a new issue