diff --git a/tutorial---basic-player-traits/.gitattributes b/tutorial---basic-player-traits/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/tutorial---basic-player-traits/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/tutorial---basic-player-traits/.gitignore b/tutorial---basic-player-traits/.gitignore new file mode 100644 index 0000000..0af181c --- /dev/null +++ b/tutorial---basic-player-traits/.gitignore @@ -0,0 +1,3 @@ +# Godot 4+ specific ignores +.godot/ +/android/ diff --git a/tutorial---basic-player-traits/assets/LowQualityHelen.png b/tutorial---basic-player-traits/assets/LowQualityHelen.png new file mode 100644 index 0000000..2000c4b Binary files /dev/null and b/tutorial---basic-player-traits/assets/LowQualityHelen.png differ diff --git a/tutorial---basic-player-traits/assets/LowQualityHelen.png.import b/tutorial---basic-player-traits/assets/LowQualityHelen.png.import new file mode 100644 index 0000000..e96e9d6 --- /dev/null +++ b/tutorial---basic-player-traits/assets/LowQualityHelen.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cxbou1xqm7udc" +path="res://.godot/imported/LowQualityHelen.png-07cc4c5127170ab10c19e297fa06618c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/LowQualityHelen.png" +dest_files=["res://.godot/imported/LowQualityHelen.png-07cc4c5127170ab10c19e297fa06618c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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 diff --git a/tutorial---basic-player-traits/assets/MagicBulletHelen.png b/tutorial---basic-player-traits/assets/MagicBulletHelen.png new file mode 100644 index 0000000..c064edb Binary files /dev/null and b/tutorial---basic-player-traits/assets/MagicBulletHelen.png differ diff --git a/tutorial---basic-player-traits/assets/MagicBulletHelen.png.import b/tutorial---basic-player-traits/assets/MagicBulletHelen.png.import new file mode 100644 index 0000000..d0d7664 --- /dev/null +++ b/tutorial---basic-player-traits/assets/MagicBulletHelen.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dby8gc6wjfoe2" +path="res://.godot/imported/MagicBulletHelen.png-ca7ff5b31b8d71a4fc0cf7769726e5c2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/MagicBulletHelen.png" +dest_files=["res://.godot/imported/MagicBulletHelen.png-ca7ff5b31b8d71a4fc0cf7769726e5c2.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +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/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 diff --git a/tutorial---basic-player-traits/icon.svg b/tutorial---basic-player-traits/icon.svg new file mode 100644 index 0000000..9d8b7fa --- /dev/null +++ b/tutorial---basic-player-traits/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tutorial---basic-player-traits/icon.svg.import b/tutorial---basic-player-traits/icon.svg.import new file mode 100644 index 0000000..5aeae18 --- /dev/null +++ b/tutorial---basic-player-traits/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c4rek0uldqngb" +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/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +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/tutorial---basic-player-traits/player.gd b/tutorial---basic-player-traits/player.gd new file mode 100644 index 0000000..e544b5d --- /dev/null +++ b/tutorial---basic-player-traits/player.gd @@ -0,0 +1,29 @@ +extends Area2D +@export var speed = 600 +var screen_size +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + screen_size = get_viewport_rect().size + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + var velocity = Vector2.ZERO + var currentSpeed = speed + if Input.is_action_pressed("move_up"): + velocity.y -= 1 + if Input.is_action_pressed("move_right"): + velocity.x += 1 + if Input.is_action_pressed("move_left"): + velocity.x -= 1 + if Input.is_action_pressed("move_down"): + velocity.y += 1 + + if Input.is_action_pressed("focus"): + currentSpeed = speed / 2 + + if velocity.length() > 0: + velocity = velocity.normalized() * currentSpeed + + position += velocity * delta + position = position.clamp(Vector2.ZERO, screen_size) diff --git a/tutorial---basic-player-traits/player.tscn b/tutorial---basic-player-traits/player.tscn new file mode 100644 index 0000000..594d8d0 --- /dev/null +++ b/tutorial---basic-player-traits/player.tscn @@ -0,0 +1,37 @@ +[gd_scene load_steps=6 format=3 uid="uid://dn6vstynf4qyu"] + +[ext_resource type="Script" path="res://player.gd" id="1_ro1ml"] +[ext_resource type="Texture2D" uid="uid://cxbou1xqm7udc" path="res://assets/LowQualityHelen.png" id="2_ertgi"] + +[sub_resource type="SpriteFrames" id="SpriteFrames_77x2a"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": ExtResource("2_ertgi") +}], +"loop": true, +"name": &"default", +"speed": 5.0 +}] + +[sub_resource type="CircleShape2D" id="CircleShape2D_emqsv"] +radius = 57.85 + +[sub_resource type="CircleShape2D" id="CircleShape2D_tnmln"] +radius = 18.63 + +[node name="Player" type="Area2D"] +script = ExtResource("1_ro1ml") +metadata/_edit_group_ = true + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] +position = Vector2(4, 0) +sprite_frames = SubResource("SpriteFrames_77x2a") + +[node name="GrazeBox" type="CollisionShape2D" parent="."] +visible = false +shape = SubResource("CircleShape2D_emqsv") + +[node name="KillBox" type="CollisionShape2D" parent="."] +shape = SubResource("CircleShape2D_tnmln") +debug_color = Color(0.966315, 0, 0.481295, 0.42) diff --git a/tutorial---basic-player-traits/project.godot b/tutorial---basic-player-traits/project.godot new file mode 100644 index 0000000..e328bbb --- /dev/null +++ b/tutorial---basic-player-traits/project.godot @@ -0,0 +1,49 @@ +; 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="Tutorial - Basic Player Traits" +run/main_scene="res://player.tscn" +config/features=PackedStringArray("4.3", "Forward Plus") +config/icon="res://icon.svg" + +[display] + +window/size/viewport_width=1920 +window/size/viewport_height=1080 + +[input] + +move_right={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +move_up={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +move_left={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) +] +} +move_down={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) +] +} +focus={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +}