es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

GODOT – ¿Las instancias de escena creadas en código no pueden recibir entrada, los nodos agregados manualmente si pueden?

Este es mi primer mensaje publicando una pregunta aquí, así que veremos cómo funciona.

He creado una escena en Godot que está configurada como:

Area2D
|
|-AnimatedSprite
|
|-CollisionShape2D

Adjunto el siguiente script:

func _input_event(_viewport, event, _shape_idx):
    if event es InputEventMouseButton \
        y event.button_index == 1 \
        y event.is_pressed():
        print (“éxito”)

Durante la configuración del juego, el script de la escena principal crea varias instancias de esta escena en diferentes coordenadas. El problema es que al hacer clic en ellas, no se activa la declaración de impresión esperada. En mi solución de problemas, agregué manualmente una instancia de la escena en el mismo lugar en el árbol de escenas que las creadas por el script y esta instancia se activa inexplicablemente cuando hago clic en ella.

¿Alguna idea? ¿Qué podría estar pasando por alto?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Es posible que las instancias creadas por el script no estén recibiendo eventos de entrada porque sus nodos CollisionShape2D no están configurados correctamente. Asegúrese de que la forma cubra el área donde se encuentra el AnimatedSprite, y de que esté configurado para detectar eventos táctiles y de ratón (en la sección Monitoreo del Inspector).

    Como alternativa, podría ser un problema con las coordenadas de las instancias creadas por el script. Verifique que se estén colocando en las posiciones correctas y que no se superpongan entre sí ni con otros nodos.

    Si ninguna de estas soluciones funciona, puede ser útil agregar algunas declaraciones de depuración al script para ver si el evento de entrada se registra en absoluto o si se están produciendo errores.

Comments are closed.