TDDE04 Introduktion till programmering och datalogiskt tänkande
Ht1-2
## Shortcuts
Gå en mapp upp i datorn:
Mac: Command+Up Arrow:
Win: Alt+Up Arrow
## Docs
[Vad är Godot](intro.sv.shtml)
* [Sammanfattning](sam.sv.shtml)
* [Varaibler](var.sv.shtml) - [Godot Doc](https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_basics.html#example-of-gdscript)
* [Boolska-värden](boolska.sv.shtml)
* [Tecken, void och null](tecken.sv.shtml)
* [Operatorer](operator.sv.shtml) - [Godot Doc](https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_basics.html#operators)
* [Arrayer](arrayer.sv.shtml) - [Godot Doc](https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_basics.html#array)
* [For-loop](for.sv.shtml) - [Godot Doc](https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_basics.html#for)
* [While-loop](while.sv.shtml) - [Godot Doc](https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_basics.html#while)
* [If-sats](if.sv.shtml) - [Godot Doc](https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_basics.html#if-else-elif)
* [Funktioner](func.sv.shtml) - [Godot Doc](https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_basics.html#functions)
* [Signaler](signals.sv.shtml) - - [Godot Doc](https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_basics.html#if-else-elif)
## Grundläggande, inbygda funktioner ([Alla](https://docs.godotengine.org/en/stable/classes/class_%40globalscope.html))
* `print()`: Skriv till output, t.ex. `print(health)`. Används för att söka fel, säkerställa rätt betteende.
* `str()`: Gör t.ex ett tal till text. T.ex. str(5), str(min_varaiable)
* `len()`: Antal element i t.ex. en Array. T.ex. `len(enemies)`
* `abs()`: Absolutbeloppet av argumentet. T.ex. `abs(-5)` blir 5.
* `sign()`: Är argumentet - eller pluss? Returnerar -1, 0 eller 1
* `Vector2()`: T.ex. `var v = Vector(2,3)`
## Särskilt viktiga funtioner
* [`queue_free()`](https://docs.godotengine.org/en/stable/classes/class_node.html#class-node-method-queue-free): Finns på alla objekt. Förstöra objektet. T.ex. sprite.queue_free() eller bara queue_free().
* _ready(), _physics_process(delta), _process(delta)
* node.get_children(), node.find_child()
* get_tree().current_scene
* get_tree().reload_current_scene(), get_tree().change_scene_to_file("res://path_to_scene.tscn")
* duplicate(): skapar en kopia av
* move_and_slide()
* DisplayServer.window_set_size(Vector2(800,400)): Bestäm storleken på spelfönstret.
* instantiate(), duplicate, new(): en egensparad scen skapas med instantiate. En Godot-Klass skapas med .new(). En nod som existerar i spelet kan koperas med duplicate.
* add_child(node): lägger till en nod till scenträdet s å att den finns i spelvärlden.
* [`Input.is_action_pressed()`](https://docs.godotengine.org/en/stable/classes/class_input.html#class-input-method-is-action-pressed): testa interaktion (tangentbord) i _physics_process. [Klicka för exempel](https://docs.godotengine.org/en/stable/tutorials/inputs/input_examples.html#events-versus-polling)
* [`randf_range()`,`randi_range()`](https://docs.godotengine.org/en/stable/classes/class_randomnumbergenerator.html#methods): Slump-funktioner.
## Control-noder och UI concept
* [Label](https://docs.godotengine.org/en/stable/classes/class_label.html): Text-label. Vi använder egenskapen `.text` på en Label för att ändra dess text.
* [CanvasLayer](https://docs.godotengine.org/en/stable/classes/class_canvaslayer.html) Om en kamera rör på sig kan man använda ett CanvasLager för att lägga UI-komponenter i så att de ligger på samma plats hela tiden.
* [TextureRect](https://docs.godotengine.org/en/stable/classes/class_texturerect.html) Bilder som även kan tilas, dvs repeteras om TextureRect görs större. `StreachMode` satt till `tile` eller i kod `STRETCH_TILE`
* [ColorRect](https://docs.godotengine.org/en/stable/classes/class_colorrect.html) Enfärgad rektangel.
* [Control, CenterContainer, MarginContainer, VBoxContainer, HBoxContainer](https://docs.godotengine.org/en/stable/classes/class_control.html#class-control). Viktiga UI-komponenter vi använder.
## 2D-noder
* [Sprite2D](https://docs.godotengine.org/en/stable/classes/class_sprite2d.html) Bilder.
* [Node2D](https://docs.godotengine.org/en/stable/classes/class_node2d.html). En tom nod med position och rotation osv.
* [Camera2D](https://docs.godotengine.org/en/stable/classes/class_camera2d.html). Om man vill flytta med vad som syns i spelet. Genom att flytta en Camera2D kan vi t.ex. följa spelaren. Kameran kan läggas som barn ett få sin position flyttad.
* [StaticBody2D](https://docs.godotengine.org/en/stable/tutorials/physics/physics_introduction.html#staticbody2d) - En fysisk kropp som inte rör på sig genom kollision. Men kan röra sig linjärt och vertikalt, dvs för att skapa rörliga platformar och rörliga fiender.
* [Area2D](https://docs.godotengine.org/en/stable/tutorials/physics/physics_introduction.html#area2d): OBjekt som upptäcker överlapp i fysiken men inte påverkar fysikaliskt. T.ex. om spelaren ska plocka upp mynt eller träffas av ett skott.
* [CharacterBody2D](https://docs.godotengine.org/en/stable/tutorials/physics/using_character_body_2d.html): Vår spelare ska vara en Characterbody2D. Den kan krocka och studsa och med kod ändra vi dess hastighet och/eller position direkt. Sedan anropar vi antingen metoden [`move_and_slide`](https://docs.godotengine.org/en/stable/tutorials/physics/physics_introduction.html#move-and-slide) och ser vad resultatet blir. Man kan se det som att vi föreslår en ny hastighet eller position och att simuleringen sedan räknar ut konsekvensen. slide - simulerar även att en spelaren följer ytor, inte studsar mot ytor.
* [CollisionShape](https://docs.godotengine.org/en/stable/tutorials/physics/physics_introduction.html#collision-shapes). Den kropp som används för kollisionsberäking. I kursen använder vi CollisionPolygon2D mycket som skapa direkt från bilder.
## Särskilda egenskaper/attribut (variabler på objekt)
* `.global_position`: Objekets position i det globala koordinatsystemet.
* `.global_rotation_degree`: En kropps rotation i grader. Går konstigt nog från -180 till 180 och snurrar runt.
* `velocity`: En Characterbody2Ds rörelsehastighet (Vector2).
* `delta` : argument i `_physics_process` och `_process`. Den mängd tid som gått sedan förra gången funktionen anropats.
* `visible`: Alla noder som är grafiska har denna egenskap. Om den är `false` blir noden osynlig.
Sidansvarig: infomaster
Senast uppdaterad: 2025-05-19