# Un nodo CharacterBody2D básico
extends CharacterBody2D var speed = 200.0 func _physics_process(delta): var direction = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down") velocity = direction * speed move_and_slide()
# Un nodo CharacterBody2D básico
extends CharacterBody2D var speed = 200.0 func _physics_process(delta): var direction = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down") velocity = direction * speed move_and_slide()
# Un nodo CharacterBody2D básico
extends CharacterBody2D var speed = 200.0 func _physics_process(delta): var direction = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down") velocity = direction * speed move_and_slide()
# enemigo.gd
extends Area2D var speed = 100.0
var direction = Vector2.LEFT func _process(delta): position += direction * speed * delta func _on_visible_on_screen_notifier_2d_screen_exited(): queue_free() # Se borra cuando sale de la pantalla
# enemigo.gd
extends Area2D var speed = 100.0
var direction = Vector2.LEFT func _process(delta): position += direction * speed * delta func _on_visible_on_screen_notifier_2d_screen_exited(): queue_free() # Se borra cuando sale de la pantalla
# enemigo.gd
extends Area2D var speed = 100.0
var direction = Vector2.LEFT func _process(delta): position += direction * speed * delta func _on_visible_on_screen_notifier_2d_screen_exited(): queue_free() # Se borra cuando sale de la pantalla
# En el script del enemigo
func _on_body_entered(body): if body.is_in_group("player"): body.take_damage(1) queue_free()
# En el script del enemigo
func _on_body_entered(body): if body.is_in_group("player"): body.take_damage(1) queue_free()
# En el script del enemigo
func _on_body_entered(body): if body.is_in_group("player"): body.take_damage(1) queue_free()
# hud.gd
extends CanvasLayer @onready var score_label = $ScoreLabel
@onready var lives_label = $LivesLabel func update_score(value): score_label.text = "Puntaje: %d" % value func update_lives(value): lives_label.text = "Vidas: %d" % value
# hud.gd
extends CanvasLayer @onready var score_label = $ScoreLabel
@onready var lives_label = $LivesLabel func update_score(value): score_label.text = "Puntaje: %d" % value func update_lives(value): lives_label.text = "Vidas: %d" % value
# hud.gd
extends CanvasLayer @onready var score_label = $ScoreLabel
@onready var lives_label = $LivesLabel func update_score(value): score_label.text = "Puntaje: %d" % value func update_lives(value): lives_label.text = "Vidas: %d" % value
# Reproducir sonido al recibir daño
$HitSound.play()
# Reproducir sonido al recibir daño
$HitSound.play()
# Reproducir sonido al recibir daño
$HitSound.play() - Generar scripts boilerplate (movimiento, colisiones, spawners)
- Diagnosticar errores de GDScript desde el stack trace
- Prototipar mecánicas que no conocés (sistema de inventario, diálogos, pathfinding) - Game design (las decisiones de diseño son tuyas)
- Arte final (los modelos generan assets inconsistentes)
- Código que no entendés (si no podés leerlo, no podés debuggearlo) - Bajá los export templates desde Editor > Manage Export Templates
- Agregá un preset de Web en Project > Export
- Exportá a una carpeta
- Subí los archivos a itch.io (gratis, sin aprobación) - Documentación oficial de Godot (también disponible en español)
- GDQuest en YouTube (tutoriales paso a paso)
- r/godot en Reddit (comunidad activa que responde preguntas)
- Godot en español (cada vez hay más contenido en español)