Cheatsheet

Godot GDScript cheatsheet

(ayuda memoria / hoja de trucos / resumen / machete)

GamedevArgentina.com

Comentarios

# esto es un comentario y es ignorado por Godot
# esto tambien

Variables

var vidas # declara la variable vidas sin tipo (tipado dinámico)
var vidas : int # declara la variable vidas como int (tipado estático)
var puntos = 0.0 # declara la variable puntos como float (tipado dinámico)
var puntos := 0.0 # declara la variable puntos como float (tipado estático)
var puntos : float = 0.0 # declara la variable puntos como float (tipado estático)
const VELOCIDAD = 100 # constante VELOCIDAD no puede cambiar el valor

Tipos de datos

int # números enteros 10
float # números con decimales 5.6
bool # booleano true (verdadero) o false (false)
String # cadena de caracteres "gamedevargentina.com"
Vector2 # 2 valores, normalmente coordenadas 2D (x, y) Vector2(5.0, 140.0)
Vector3 # 3 valores, normalmente coordenadas 3D (x, y, z) Vector2(5.0, 10.0, 3.5)
Array # lista
Dictionary # diccionario "clave" : "valor"

Listas (Arrays) y Diccionarios

var lista: Array = [1, 2, "Hola", true] # lista. puede tener valores de distinto tipo. van entre corchetes separados por comas
var enemigos: Dictionary = {"ogro": "Igor", "heroe": "Cronos"} # pares clave : valor

Operadores aritméticos

suma 5 + 3
resta 5 - 3
multiplicación 3 * 3
división 9 / 3
resto de la división 5 % 2
potencia 3 ** 3

Operadores de comparación

igual 5 == 3 # false
no igual 5 != 3 # true
menor que 3 < 5 # true
menor o igual que 3 <= 5 # true
mayor que 3 > 5 # false
mayor o igual que 3 >= 5 # false

Operadores lógicos

a and b # y lógico. a y b tienen que ser verdaderos para que la operación sea verdadera. también se puede usar &&
a or b # o lógico. con que a o b sea verdadero, ya es verdadera la operación. también se puede usar ||
not a # invierte el valor de a (verdadero a falso y falso a verdadero)

Asignación

nombre = "Ale" # variable = valor
puntos += 1 # puntos = puntos + 1
vidas -= 1 # vidas = vidas - 1
puntos *= 2 # puntos = puntos * 2
vidas /= 2 # vidas = vidas / 2

Coversión de tipos (cast)

str(5) # convierte número a String
int("5")  # convierte String a entero
float(5)  # convierte número entero a número decimal

Condicionales (if, elif, else)

if numero == 5: # si es 5
    print("cinco")
elif numero == 6: # si no es 5 pero si es 6
    print("seis")
else: # si no es ninguna de las condiciones anteriores
    print("el numero no es ni cinco ni seis")

match nombre: # compara nombre con distintos valores
    "Ale":
        print("Hola Alejandro")
    "Mari":
        print("Hola María!")
    _:
        print("No se quien sos")

Funciones

print("Hola") # llama a la función print con el parametro "Hola". print muestra por consola

func saluda(): # declara la función saluda sin parametros
    print("Hola")

func saluda(nombre): # declara la función saluda con parametro nombre
    print("Hola", nombre)

saluda("Ale") # llama a la función saluda con el parámetro "Ale"

func suma(primer_numero, segundo_numero): # declara la función suma con 2 parámetros
    return primer_numero + segundo_numero # devuelve como resultado la suma

print(suma(5, 6)) # muestra 11 en la consola

var numero_aleatorio = randi_range(1, 5) # devuelve un número aleatorio entre 1 y 5
print(len("Ale")) # devuelve la longitud de una cadena de caracteres (3)
print("Ale".to_upper()) # ALE
print("Ale".to_lower()) # ale
get_parent() # accede al nodo padre del nodo actual
get_node("nodo") # accede al nodo hijo del nodo actual. un atajo es $nodo o $"nodo"

Funciones internas

func _ready(): # se ejecuta una sola vez al poner el nodo en la escena cuando ya está listo
    pass # no hace nada, es para no dejar vacia la función

func _process(delta): # se ejecuta en cada cuadro

func _physics_process(delta): # se ejecuta con los cálculos de la física 60 veces por segundo

func _input(event): # se ejecuta cuando hay un evento de entrada (joystick, mouse, teclado, touch)

Bucles

for contador in range(5):
    print(contador) # muestra 0, 1, 2, 3, 4 en la terminal

for item in lista:
    print(item) # muestra cada item del array lista en la terminal

var contador = 0
while contador < 5:
    print(contador) # muestra 0, 1, 2, 3, 4 en la terminal
    contador += 1

Señales

signal destruido # crea una señal
destruido.emit() # emite la señal
destruido.connect(al_destruir) # conecta la señal con la funcion al_destruir

Teclas pulsadas

if Input.is_action_pressed("ui_left"): # tecla flecha izquierda pulsada
    position.x -= 1 # mover el nodo a la izquierda 1 pixel

if Input.is_action_just_pressed("ui_accept"): # tecla enter recien pulsada
    position.y -= 100 # mover el nodo hacia arriba 100 pixels

if Input.is_action_just_released("ui_down"): # tecla flecha abajo dejó de ser pulsada