Tags: godot, gdscript, scene-tree, signals, process, tweening, export, game-engine Last updated: 2026-06-27

Godot (GDScript) Cheatsheet

Quick Reference

ConceptKey API
Lifecycle_ready() / _process(delta) / _physics_process(delta)
Scene treeget_node() / $ shorthand / @onready
Signals.connect() / .emit() / signal keyword
Tweeningcreate_tween() / tween_property() / tween_method()
Export variables@export var / @export_range / @export_enum
InputInput.is_action_pressed() / _input(event)
Groupsadd_to_group() / get_tree().call_group()
Resourcespreload() / load() / Resource type

Scene Tree & Node Access

var player = $Player
var health_bar = $UI/HealthBar

@onready var anim = $AnimationPlayer
@onready var sprite = $Sprite2D as Sprite2D
Enter tree   → _enter_tree()
Ready        → _ready()
Process      → _process(delta)
Physics      → _physics_process(delta)
Exit tree    → _exit_tree()
func _ready():
    $Label.text = "Hello, Godot!"

func _physics_process(delta):
    velocity += gravity * delta
    move_and_slide()

func _process(delta):
    $FPSLabel.text = "FPS: %d" % Engine.get_frames_per_second()

Signals

signal health_changed(new_health: int, max_health: int)
signal died
health_changed.emit(75, 100)
died.emit()
func _ready():
    $Button.pressed.connect(_on_button_pressed)
    player.health_changed.connect(_on_health_changed)

func _on_button_pressed(): print("Clicked!")
func _on_health_changed(new_hp: int, max_hp: int):
    health_bar.value = float(new_hp) / max_hp

Editor connection: Select source node → Node dock → Signals tab → double-click signal → pick target.

$Timer.timeout.connect(func(): queue_free(), CONNECT_ONE_SHOT)

_process vs _physics_process

func _process(delta):        position.x += speed * delta
func _physics_process(delta): velocity = direction * speed; move_and_slide()

Tweening

var tween = create_tween()
tween.tween_property($Sprite, "position", Vector2(200, 0), 0.5)
tween.tween_property($Sprite, "modulate:a", 0.0, 0.3)
tween.set_trans(Tween.TRANS_BOUNCE).set_ease(Tween.EASE_OUT)
tween.tween_property($Sprite, "scale", Vector2(2, 2), 0.8)
tween.tween_method(_update_health, 100.0, 0.0, 1.0)
tween.tween_callback(_on_tween_finished)
tween.set_parallel(true)
tween.tween_property($A, "position:x", 100, 0.5)
tween.tween_property($B, "position:y", 200, 0.5)

Easing Quick Reference

TransitionEase
TRANS_LINEAR / TRANS_SINEEASE_IN / EASE_OUT / EASE_IN_OUT
TRANS_BOUNCE / TRANS_ELASTICEASE_OUT
TRANS_BACKEASE_IN / EASE_OUT

@export Variables

@export var speed: float = 200.0
@export var max_health: int = 100
@export_range(0, 100) var volume: float = 80
@export_range(0.1, 2.0, 0.1) var scale_mult: float = 1.0
@export_enum("Warrior", "Mage", "Rogue") var character_class: String
@export var weapon: PackedScene
@export var hit_sound: AudioStream
@export var target_node: NodePath
@export_multiline var dialogue: String
@export var waypoints: Array[Vector2] = []
@export_group("Combat")
@export var damage: int = 10
@export var attack_speed: float = 1.0

Input

func _physics_process(_delta):
    var direction = Input.get_axis("move_left", "move_right")
    if Input.is_action_just_pressed("jump"): velocity.y = -jump_force

func _input(event: InputEvent):
    if event is InputEventMouseButton and event.pressed:
        if event.button_index == MOUSE_BUTTON_LEFT: _shoot()
    if event is InputEventKey and event.pressed:
        match event.keycode: KEY_ESCAPE: _pause()

func _process(_delta):
    look_at(get_global_mouse_position())

Tips