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()