Ponte - Pali
This commit is contained in:
@@ -57,17 +57,6 @@ func _ready() -> void:
|
||||
print("ATTENZIONE: Devi prima disegnare i punti del Path3D!")
|
||||
|
||||
func _costruisci_rotaie_da_zero() -> void:
|
||||
var mat_legno = StandardMaterial3D.new()
|
||||
mat_legno.albedo_color = Color(0.35, 0.2, 0.1)
|
||||
var mat_ferro = StandardMaterial3D.new()
|
||||
mat_ferro.albedo_color = Color(0.6, 0.6, 0.65)
|
||||
mat_ferro.metallic = 0.8
|
||||
|
||||
var mesh_traversina_default = BoxMesh.new()
|
||||
mesh_traversina_default.size = Vector3(larghezza_binari + 0.6, 0.1, 0.3)
|
||||
var mesh_binario = BoxMesh.new()
|
||||
mesh_binario.size = Vector3(0.1, 0.15, distanza_traversine + 0.05)
|
||||
|
||||
var lunghezza_totale = curve.get_baked_length()
|
||||
var numero_pezzi = int(lunghezza_totale / distanza_traversine)
|
||||
|
||||
@@ -80,6 +69,7 @@ func _costruisci_rotaie_da_zero() -> void:
|
||||
var distanza_avanti = distanza + 0.1
|
||||
var pos_avanti_locale = Vector3.ZERO
|
||||
|
||||
# Calcola la posizione successiva per orientare correttamente il pezzo
|
||||
if distanza_avanti > lunghezza_totale:
|
||||
var pos_dietro = curve.sample_baked(distanza - 0.1, true)
|
||||
pos_avanti_locale = pos_attuale_locale + (pos_attuale_locale - pos_dietro)
|
||||
@@ -89,29 +79,15 @@ func _costruisci_rotaie_da_zero() -> void:
|
||||
pezzo_binario.position = pos_attuale_locale
|
||||
var globale_attuale = to_global(pos_attuale_locale)
|
||||
var globale_avanti = to_global(pos_avanti_locale)
|
||||
|
||||
# Ruota il pezzo affinché segua la curva
|
||||
if globale_attuale.distance_to(globale_avanti) > 0.001:
|
||||
pezzo_binario.look_at(globale_avanti, Vector3.UP)
|
||||
|
||||
if modello_traversina != null:
|
||||
var traversina_custom = modello_traversina.instantiate()
|
||||
pezzo_binario.add_child(traversina_custom)
|
||||
else:
|
||||
var traversina = MeshInstance3D.new()
|
||||
traversina.mesh = mesh_traversina_default
|
||||
traversina.material_override = mat_legno
|
||||
pezzo_binario.add_child(traversina)
|
||||
|
||||
var binario_sx = MeshInstance3D.new()
|
||||
binario_sx.mesh = mesh_binario
|
||||
binario_sx.material_override = mat_ferro
|
||||
binario_sx.position = Vector3(-larghezza_binari / 2.0, 0.1, 0)
|
||||
pezzo_binario.add_child(binario_sx)
|
||||
|
||||
var binario_dx = MeshInstance3D.new()
|
||||
binario_dx.mesh = mesh_binario
|
||||
binario_dx.material_override = mat_ferro
|
||||
binario_dx.position = Vector3(larghezza_binari / 2.0, 0.1, 0)
|
||||
pezzo_binario.add_child(binario_dx)
|
||||
# Inserisce ESCLUSIVAMENTE il tuo modello (che contiene traversine e rotaie)
|
||||
if modello_traversina:
|
||||
var pezzo_custom = modello_traversina.instantiate()
|
||||
pezzo_binario.add_child(pezzo_custom)
|
||||
|
||||
func _calcola_fermate() -> void:
|
||||
var fermate_temp = []
|
||||
@@ -284,40 +260,4 @@ func _costruisci_treno() -> void:
|
||||
if modello_treno != null:
|
||||
treno_istanziato = modello_treno.instantiate()
|
||||
add_child(treno_istanziato)
|
||||
else:
|
||||
_costruisci_trenino_default()
|
||||
|
||||
func _costruisci_trenino_default() -> void:
|
||||
treno_istanziato = Node3D.new()
|
||||
add_child(treno_istanziato)
|
||||
|
||||
var mat_carrozzeria = StandardMaterial3D.new()
|
||||
mat_carrozzeria.albedo_color = Color(0.8, 0.15, 0.15)
|
||||
var mat_vetro = StandardMaterial3D.new()
|
||||
mat_vetro.albedo_color = Color(0.2, 0.8, 1.0)
|
||||
|
||||
var base_treno = MeshInstance3D.new()
|
||||
var mesh_base = BoxMesh.new()
|
||||
mesh_base.size = Vector3(1.4, 0.8, 3.0)
|
||||
base_treno.mesh = mesh_base
|
||||
base_treno.material_override = mat_carrozzeria
|
||||
base_treno.position = Vector3(0, 0.6, 0)
|
||||
treno_istanziato.add_child(base_treno)
|
||||
|
||||
var cabina = MeshInstance3D.new()
|
||||
var mesh_cabina = BoxMesh.new()
|
||||
mesh_cabina.size = Vector3(1.4, 1.0, 1.2)
|
||||
cabina.mesh = mesh_cabina
|
||||
cabina.material_override = mat_vetro
|
||||
cabina.position = Vector3(0, 1.5, -0.8)
|
||||
treno_istanziato.add_child(cabina)
|
||||
|
||||
var ciminiera = MeshInstance3D.new()
|
||||
var mesh_ciminiera = CylinderMesh.new()
|
||||
mesh_ciminiera.top_radius = 0.2
|
||||
mesh_ciminiera.bottom_radius = 0.3
|
||||
mesh_ciminiera.height = 0.8
|
||||
ciminiera.mesh = mesh_ciminiera
|
||||
ciminiera.material_override = mat_carrozzeria
|
||||
ciminiera.position = Vector3(0, 1.2, 1.0)
|
||||
treno_istanziato.add_child(ciminiera)
|
||||
|
||||
Reference in New Issue
Block a user