Topic was automatically imported from the old Question2Answer platform.
Asked By
Hernán Montes
Saludos a todos soy nuevo en el uso de godot
Deseo realizar un juego en el que arrastre unos objetos y los coloque en el lugar correcto, al ubicar cada objeto en su lugar se debe mover un sprite que tiene la imagen de una persona la cual ira avanzando siempre y cado coloque los objetos correctamente
lo de arrastrar y ubicación de los objetos ya lo tengo realizado.
El asunto es que cuando ya detecta que el objeto esta ubicado en su lugar deseo mover el sprite pero me sale error "Invalid set index 'position' (on base: 'null instance') with value of type 'Vector2'."
mi funcion es la siguiente
func _on_Area2D_area_exited(area):
if area.is_in_group(group_node_expected):
area.get_parent().over_place = false
node_expected_on_shape.remove(node_expected_on_shape.find(area.get_parent()))
cont = cont + 1
print(cont)
print("correcto")
global.score()
$d.position = Vector2(20,20) #En esta linea es el error
Al parecer no admite esa propiedad.
pues al colocar en boton si funciona
$d.position = Vector2(20,20)
Muchas gracias.
He logrado solucionar el inconveniente, me ha servido mucho la información brindad.
Lo solucioné ubicando la función mover_per() en el Nodo principal
Esa error signífica que hace falta la propriedad “position” en la Node $d. Pero también dice la error que $d es una “null instance”, pues $d es nada. El operator $ busca el nombre de una Node niña (en este caso, busca una Node con el nombre “d”). Esa error signífica que hace falta una Node “d” bajo de la Node actual.
Puede compartir la structura de la escena?
Con gusto lo comparto:
Pero creo que mejor lo subo un vídeo al youtube explicando lo que deseo realizar:
Ahorá entiendo por que hay tantas preguntas de idioma español
Supongo que el code que comparto usted (func _on_Area2D_area_exited(area)) es el del scripto Dnd_node_container, si? Y usted puso la linea $d.position = Vector2(20,20).
Como ya dije, la instruccion $d busca una Node niña que se llama “d”, pero la node “d” no es niña de la node Dnd_node_container, la cual tiene el scripto. Entonces no se encuantra a “d” y le da error. Tiene que dar el camino explicito de la node “d”: get_node("/root/Node2D/d") o igualmente $"/root/Node2D/d" (El simbolo $ es igual a get_node()).
Bernard Cloutier | 2020-02-14 16:17
he realizado lo que me ha indicado y coloque el siguiente codigo
get_node(“res://esenas/principal/Node2D/UI/Control/d”).position=Vector2(20,30)
pero igual me sigue saliendo error
“Invalid set index ‘position’ (on base: ‘null instance’) with value of type ‘Vector2’.”
como podría solucionar este error?
Hernán Montes | 2020-02-17 00:26
El camino de la node en la escena no es el mismo que el en file manager. Ya le he dado el camino correcto: get_node("/root/Node2D/d"). /root siempre es la raíz de juego. La node llamada “Node2D” (mejor lo ponen un nombre mas significativo) es la raíz de su escena principal, entonces su camino es “/root/Node2D”. La node “d” (también podría darle un nombre mas descriptivo) es su niña, entonces su camino es “/root/Node2D/d”.