Godot Version
3.5
Question
My code is failing when it comes to check if there exist child nodes this is my code
I’m relative new in this game engine so i don’t really know how to solve it
extends Node2D
export var maxcartas: int = 4
export var carta_scene: PackedScene # La escena de la carta a instanciar
var o1 = false
var o2 = false
var o3 = false
var o4 = false
var children = get_children()
var carta_1: Node2D
var carta_2: Node2D
var carta_3: Node2D
var carta_4: Node2D
var posiciones = [
Vector2(100, 100),
Vector2(160, 100),
Vector2(300, 100),
Vector2(360, 100)
]
var velocidad_movimiento = 200 # Velocidad en píxeles por segundo
func _ready():
_crear_cartas()
_distribuir_cartas()
func _crear_cartas():
# Asegúrate de que no haya cartas previas almacenadas
carta_1 = null
carta_2 = null
carta_3 = null
carta_4 = null
for i in range(maxcartas):
var nueva_carta = carta_scene.instance()
add_child(nueva_carta)
_escala_carta(nueva_carta)
_ubicar_carta(nueva_carta, i)
# Asignamos la carta a la variable correspondiente
if i == 0:
carta_1 = nueva_carta
elif i == 1:
carta_2 = nueva_carta
elif i == 2:
carta_3 = nueva_carta
elif i == 3:
carta_4 = nueva_carta
func _escala_carta(carta):
carta.scale = Vector2(0.5, 0.5) # Escala las cartas a la mitad
func _ubicar_carta(carta, indice):
if indice < posiciones.size():
carta.position = posiciones[indice]
func _distribuir_cartas():
# Aquí puedes ajustar cómo distribuir las cartas si es necesario
pass
func repartir_carta():
if get_child_count() > 0:
var carta = get_child(0)
remove_child(carta)
carta.position = Vector2(rand_range(0, 300), rand_range(0, 300))
add_child(carta)
else:
print(“No hay más cartas en el mazo.”)
func _physics_process(delta):
_check_cartas()
func _check_cartas():
var children = get_children()
print(children)
var num_hijos = get_child_count()
# Reiniciamos los indicadores
o1 = false
o2 = false
o3 = false
o4 = false
# Revisamos la existencia de cada carta según su posición
if num_hijos >= 1 and not children[0] == null:
o1 = true
if num_hijos >= 2 and not children[1] == null:
o2 = true
if num_hijos >= 3 and not children[2] == null:
o3 = true
if num_hijos >= 4 and not children[3] == null:
o4 = true
move_cartas(children)
func move_cartas(hijos):
var tween = create_tween()
if not o2 and hijos.size() > 0:
tween.tween_property(hijos[0], "position", posiciones[1], 1.0)
if not o3 and hijos.size() > 1:
tween.tween_property(hijos[1], "position", posiciones[2], 1.0)
if not o4 and hijos.size() > 2:
tween.tween_property(hijos[2], "position", posiciones[3], 1.0)
tween.play()