From c6c6031782de4f815999f79b59f21ce88d762659 Mon Sep 17 00:00:00 2001 From: cormacratledge Date: Mon, 20 Apr 2026 21:16:07 -0400 Subject: [PATCH] week 1: four game object, gamecontroller, signals --- .editorconfig | 4 ++ .gitattributes | 2 + .gitignore | 3 ++ game.tscn | 73 +++++++++++++++++++++++++++++++++++ icon.svg | 1 + icon.svg.import | 43 +++++++++++++++++++++ project.godot | 30 ++++++++++++++ scripts/game.gd | 18 +++++++++ scripts/game.gd.uid | 1 + scripts/platform.gd | 11 ++++++ scripts/platform.gd.uid | 1 + scripts/player_guy.gd | 32 +++++++++++++++ scripts/player_guy.gd.uid | 1 + scripts/trigger_circle.gd | 10 +++++ scripts/trigger_circle.gd.uid | 1 + 15 files changed, 231 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 game.tscn create mode 100644 icon.svg create mode 100644 icon.svg.import create mode 100644 project.godot create mode 100644 scripts/game.gd create mode 100644 scripts/game.gd.uid create mode 100644 scripts/platform.gd create mode 100644 scripts/platform.gd.uid create mode 100644 scripts/player_guy.gd create mode 100644 scripts/player_guy.gd.uid create mode 100644 scripts/trigger_circle.gd create mode 100644 scripts/trigger_circle.gd.uid diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..f28239b --- /dev/null +++ b/.editorconfig @@ -0,0 +1,4 @@ +root = true + +[*] +charset = utf-8 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0af181c --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# Godot 4+ specific ignores +.godot/ +/android/ diff --git a/game.tscn b/game.tscn new file mode 100644 index 0000000..a1a75f2 --- /dev/null +++ b/game.tscn @@ -0,0 +1,73 @@ +[gd_scene format=3 uid="uid://btxq5hrirovod"] + +[ext_resource type="Script" uid="uid://f42eg5a0cckl" path="res://scripts/player_guy.gd" id="1_80nbo"] +[ext_resource type="Script" uid="uid://cebn6t5n1cwib" path="res://scripts/platform.gd" id="1_e2o6t"] +[ext_resource type="Script" uid="uid://jsnpm50wknk2" path="res://scripts/game.gd" id="1_fc0e3"] +[ext_resource type="Script" uid="uid://cdxh14mtlvhl6" path="res://scripts/trigger_circle.gd" id="3_feb5d"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_mwb40"] +size = Vector2(342, 62) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_80nbo"] +size = Vector2(129, 132) + +[sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_mwb40"] + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_80nbo"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_e2o6t"] +radius = 153.83757 + +[node name="Game" type="Node2D" unique_id=1249397989] +script = ExtResource("1_fc0e3") + +[node name="platform" type="StaticBody2D" parent="." unique_id=817692358] +position = Vector2(528, 486) +script = ExtResource("1_e2o6t") +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="platform" unique_id=469432658] +shape = SubResource("RectangleShape2D_mwb40") + +[node name="wall left" type="StaticBody2D" parent="." unique_id=1750621226] +position = Vector2(528, 486) +rotation = -1.5922282 +constant_linear_velocity = Vector2(20, 0) + +[node name="wall left" type="CollisionShape2D" parent="wall left" unique_id=482160421] +position = Vector2(148.07408, -141.85933) +shape = SubResource("RectangleShape2D_mwb40") + +[node name="cube" type="RigidBody2D" parent="." unique_id=1022714074] +position = Vector2(554, 136) +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="cube" unique_id=111037541] +position = Vector2(54.5, 56) +shape = SubResource("RectangleShape2D_80nbo") +debug_color = Color(0.95640117, 0, 0.540705, 0.41960785) + +[node name="world border" type="StaticBody2D" parent="." unique_id=920368740] +position = Vector2(563, 988) +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="world border" unique_id=1075301728] +shape = SubResource("WorldBoundaryShape2D_mwb40") + +[node name="CharacterBody2D" type="CharacterBody2D" parent="." unique_id=1928490773] +position = Vector2(491, 38) +script = ExtResource("1_80nbo") +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="CharacterBody2D" unique_id=1078296156] +shape = SubResource("CapsuleShape2D_80nbo") + +[node name="Area2D" type="Area2D" parent="." unique_id=733267557] +position = Vector2(881, 413) +script = ExtResource("3_feb5d") +metadata/_edit_group_ = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D" unique_id=762446279] +shape = SubResource("CircleShape2D_e2o6t") + +[connection signal="body_entered" from="Area2D" to="Area2D" method="_on_body_entered"] diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..c6bbb7d --- /dev/null +++ b/icon.svg @@ -0,0 +1 @@ + diff --git a/icon.svg.import b/icon.svg.import new file mode 100644 index 0000000..3d5b51e --- /dev/null +++ b/icon.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dh5dx7goqr6lh" +path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..c6318bd --- /dev/null +++ b/project.godot @@ -0,0 +1,30 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="AprilGame" +run/main_scene="uid://btxq5hrirovod" +config/features=PackedStringArray("4.6", "Forward Plus") +config/icon="res://icon.svg" + +[file_customization] + +folder_colors={ +"res://scripts/": "blue" +} + +[physics] + +3d/physics_engine="Jolt Physics" + +[rendering] + +rendering_device/driver.windows="d3d12" diff --git a/scripts/game.gd b/scripts/game.gd new file mode 100644 index 0000000..331b70c --- /dev/null +++ b/scripts/game.gd @@ -0,0 +1,18 @@ +extends Node2D + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + get_window().grab_focus() + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass + + +func on_trigger(body: Variant, intentMessage: Variant) -> void: + print("hello") + if not body is Player and intentMessage == "destroy": + if intentMessage == "destroy": + body.queue_free() diff --git a/scripts/game.gd.uid b/scripts/game.gd.uid new file mode 100644 index 0000000..9804492 --- /dev/null +++ b/scripts/game.gd.uid @@ -0,0 +1 @@ +uid://jsnpm50wknk2 diff --git a/scripts/platform.gd b/scripts/platform.gd new file mode 100644 index 0000000..27571ba --- /dev/null +++ b/scripts/platform.gd @@ -0,0 +1,11 @@ +extends StaticBody2D + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + get_window().grab_focus() + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass diff --git a/scripts/platform.gd.uid b/scripts/platform.gd.uid new file mode 100644 index 0000000..ff5c326 --- /dev/null +++ b/scripts/platform.gd.uid @@ -0,0 +1 @@ +uid://cebn6t5n1cwib diff --git a/scripts/player_guy.gd b/scripts/player_guy.gd new file mode 100644 index 0000000..c3b2867 --- /dev/null +++ b/scripts/player_guy.gd @@ -0,0 +1,32 @@ +class_name Player extends CharacterBody2D + + + +const SPEED =200.0 +const JUMP_VELOCITY = -550.0 + + +func _physics_process(delta: float) -> void: + # Add the gravity. + if not is_on_floor(): + velocity += get_gravity() * delta + + # Handle jump. + if Input.is_action_just_pressed("ui_accept") and is_on_floor(): + velocity.y = JUMP_VELOCITY + if Input.is_action_just_pressed("ui_accept") and is_on_wall(): velocity.y = JUMP_VELOCITY + + # Get the input direction and handle the movement/deceleration. + # As good practice, you should replace UI actions with custom gameplay actions. + var direction := Input.get_axis("ui_left", "ui_right") + if direction: + velocity.x = direction * SPEED + else: + velocity.x = move_toward(velocity.x, 0, SPEED) + + move_and_slide() + for i in get_slide_collision_count(): + var c = get_slide_collision(i) + if c.get_collider() is RigidBody2D + #deliver the impact + c.get_collider().apply-central-impulse(-c.get_normal() * 100) diff --git a/scripts/player_guy.gd.uid b/scripts/player_guy.gd.uid new file mode 100644 index 0000000..1daae3a --- /dev/null +++ b/scripts/player_guy.gd.uid @@ -0,0 +1 @@ +uid://f42eg5a0cckl diff --git a/scripts/trigger_circle.gd b/scripts/trigger_circle.gd new file mode 100644 index 0000000..201caf3 --- /dev/null +++ b/scripts/trigger_circle.gd @@ -0,0 +1,10 @@ +class_name Trigger extends Area2D + +@export var intent:String = "destroy" + +signal triggerActiveSignal(body, intentMessage) + +func _on_body_entered(body: CollisionObject2D) -> void: + print ("YOU LOST >:O") + + triggerActiveSignal.emit(body,intent) diff --git a/scripts/trigger_circle.gd.uid b/scripts/trigger_circle.gd.uid new file mode 100644 index 0000000..70bf566 --- /dev/null +++ b/scripts/trigger_circle.gd.uid @@ -0,0 +1 @@ +uid://cdxh14mtlvhl6