Hoppa till huvudinnehåll

Kodexempel

Låt oss titta på hur GDScript ser ut jämfört med Python som du redan känner till.

Grundläggande syntax

# En enkel funktion i GDScript - mycket lik Python
func hej(namn: String) -> String: # Funktionen tar en sträng och returnerar en sträng
return "Hej, %s!" % namn # Motsvarar f"Hej, {namn}!" i Python

func _ready():
var mitt_namn = "Världen" # Variabeldeklaration med "var"
print(hej(mitt_namn)) # print() fungerar precis som i Python

Detta skript är kopplat till en Node2D i scenen

extends Node2D  # Alla skript är kopplade till en nodtyp

func _ready():
print("Scenen är redo!") # Körs automatiskt när noden laddas

func _unhandled_input(event: InputEvent) -> void:
if event is InputEventKey:
print("Tangent tryckt") #koden körs när man trycker ner knappen och när man släpper av den
if event is InputEventMouseButton:
print("Musknapp tryckt")

Spelarkontroll i 2D

Här är ett exempel på ett skript som styr en 2D-karaktär med rörelse och hopp, kopplat till en CharacterBody2D-nod i Godot.

extends CharacterBody2D  # Ärver från Godots inbyggda klass för karaktärer med fysik

const SPEED = 300.0 # Hur snabbt spelaren rör sig åt vänster/höger
const JUMP_VELOCITY = -400.0 # Hopphastighet (negativt för att gå uppåt på Y-axeln)

func _physics_process(delta: float) -> void:
# Lägg till gravitation om spelaren inte står på marken
if not is_on_floor():
velocity += get_gravity() * delta

# Hantera hopp om spelaren är på marken och hopptangenten trycks
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
velocity.y = JUMP_VELOCITY

# Hämta inmatning åt vänster/höger
# Tips: ersätt gärna UI-actions med egna inmatningsnamn i Input Map
var direction := Input.get_axis("ui_left", "ui_right")

if direction:
# Om spelaren trycker vänster eller höger, uppdatera hastigheten
velocity.x = direction * SPEED
else:
# Om ingen knapp trycks, sakta in rörelsen mot 0 (friktionseffekt)
velocity.x = move_toward(velocity.x, 0, SPEED)

# Flytta spelaren baserat på uppdaterad hastighet
move_and_slide()