commit fc6678f58b4d513946a4f4eb96db30da17144a23 Author: LittleSheep Date: Sun Aug 4 23:00:26 2024 +0800 :tada: Initial Commit & Basic Movement 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..4709183 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +# Godot 4+ specific ignores +.godot/ diff --git a/.idea/.idea.CodingLand/.idea/.gitignore b/.idea/.idea.CodingLand/.idea/.gitignore new file mode 100644 index 0000000..360bcd3 --- /dev/null +++ b/.idea/.idea.CodingLand/.idea/.gitignore @@ -0,0 +1,13 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Rider ignored files +/.idea.CodingLand.iml +/modules.xml +/contentModel.xml +/projectSettingsUpdater.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/.idea.CodingLand/.idea/encodings.xml b/.idea/.idea.CodingLand/.idea/encodings.xml new file mode 100644 index 0000000..df87cf9 --- /dev/null +++ b/.idea/.idea.CodingLand/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/.idea.CodingLand/.idea/indexLayout.xml b/.idea/.idea.CodingLand/.idea/indexLayout.xml new file mode 100644 index 0000000..7b08163 --- /dev/null +++ b/.idea/.idea.CodingLand/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/CodingLand.csproj b/CodingLand.csproj new file mode 100644 index 0000000..887d5d3 --- /dev/null +++ b/CodingLand.csproj @@ -0,0 +1,8 @@ + + + net6.0 + net7.0 + net8.0 + true + + \ No newline at end of file diff --git a/CodingLand.sln b/CodingLand.sln new file mode 100644 index 0000000..1e1ef50 --- /dev/null +++ b/CodingLand.sln @@ -0,0 +1,19 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CodingLand", "CodingLand.csproj", "{34C1D1E1-B85A-4557-8214-332509D2F647}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + ExportDebug|Any CPU = ExportDebug|Any CPU + ExportRelease|Any CPU = ExportRelease|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {34C1D1E1-B85A-4557-8214-332509D2F647}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {34C1D1E1-B85A-4557-8214-332509D2F647}.Debug|Any CPU.Build.0 = Debug|Any CPU + {34C1D1E1-B85A-4557-8214-332509D2F647}.ExportDebug|Any CPU.ActiveCfg = ExportDebug|Any CPU + {34C1D1E1-B85A-4557-8214-332509D2F647}.ExportDebug|Any CPU.Build.0 = ExportDebug|Any CPU + {34C1D1E1-B85A-4557-8214-332509D2F647}.ExportRelease|Any CPU.ActiveCfg = ExportRelease|Any CPU + {34C1D1E1-B85A-4557-8214-332509D2F647}.ExportRelease|Any CPU.Build.0 = ExportRelease|Any CPU + EndGlobalSection +EndGlobal diff --git a/Scenes/Player.tscn b/Scenes/Player.tscn new file mode 100644 index 0000000..55a06ed --- /dev/null +++ b/Scenes/Player.tscn @@ -0,0 +1,18 @@ +[gd_scene load_steps=4 format=3 uid="uid://b3gx0bl43lku3"] + +[ext_resource type="Script" path="res://Scripts/Player.cs" id="1_0btyt"] +[ext_resource type="Texture2D" uid="uid://c4als6t3k4myc" path="res://Sprites/Player.png" id="1_cqpqa"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_68yf8"] +radius = 26.0768 + +[node name="Player" type="CharacterBody2D"] +script = ExtResource("1_0btyt") + +[node name="Sprite2D" type="Sprite2D" parent="."] +position = Vector2(2.08165e-12, 2.08165e-12) +scale = Vector2(0.05, 0.05) +texture = ExtResource("1_cqpqa") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("CircleShape2D_68yf8") diff --git a/Scenes/Root.tscn b/Scenes/Root.tscn new file mode 100644 index 0000000..9fbb810 --- /dev/null +++ b/Scenes/Root.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=2 format=3 uid="uid://bjhmjrldq4lkt"] + +[ext_resource type="PackedScene" uid="uid://b3gx0bl43lku3" path="res://Scenes/Player.tscn" id="1_vby0g"] + +[node name="Node" type="Node"] + +[node name="Camera2D" type="Camera2D" parent="."] +process_callback = 0 +position_smoothing_enabled = true +rotation_smoothing_enabled = true + +[node name="Player" parent="." node_paths=PackedStringArray("PlayerCamera") instance=ExtResource("1_vby0g")] +position = Vector2(0, 2) +PlayerCamera = NodePath("../Camera2D") diff --git a/Scripts/Player.cs b/Scripts/Player.cs new file mode 100644 index 0000000..4d7b803 --- /dev/null +++ b/Scripts/Player.cs @@ -0,0 +1,51 @@ +using Godot; + +namespace CodingLand.Scripts; + +public partial class Player : CharacterBody2D +{ + [Export] public float MaxSpeed = 400f; + [Export] public float Acceleration = 500f; + [Export] public float Deceleration = 500f; + [Export] public float RotationSpeed = 5f; + + [Export] public float CameraSmoothness = 0.05f; + + [Export] public Camera2D PlayerCamera; + + public override void _PhysicsProcess(double delta) + { + var input = Vector2.Zero; + + if (Input.IsActionPressed("move_right")) + input.X += 1; + if (Input.IsActionPressed("move_left")) + input.X -= 1; + if (Input.IsActionPressed("move_down")) + input.Y += 1; + if (Input.IsActionPressed("move_up")) + input.Y -= 1; + + input = input.Normalized(); + + if (input != Vector2.Zero) + { + Velocity = Velocity.MoveToward(input * MaxSpeed, Acceleration * (float)delta); + + var finalRotation = input.Angle() + Mathf.Pi / 2; + Rotation = Mathf.LerpAngle(Rotation, finalRotation, RotationSpeed * (float)delta); + } + else + { + Velocity = Velocity.MoveToward(Vector2.Zero, Deceleration * (float)delta); + } + + Position += Velocity * (float)delta; + MoveAndSlide(); + + if (PlayerCamera != null) + { + PlayerCamera.Position = GlobalPosition; + } + } +} diff --git a/Sprites/Player.png b/Sprites/Player.png new file mode 100644 index 0000000..1ec7c91 Binary files /dev/null and b/Sprites/Player.png differ diff --git a/Sprites/Player.png.import b/Sprites/Player.png.import new file mode 100644 index 0000000..e5a58ef --- /dev/null +++ b/Sprites/Player.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c4als6t3k4myc" +path="res://.godot/imported/Player.png-0662117005c6b9039deb63a286c8efe4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Sprites/Player.png" +dest_files=["res://.godot/imported/Player.png-0662117005c6b9039deb63a286c8efe4.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/icon.svg b/icon.svg new file mode 100644 index 0000000..3fe4f4a --- /dev/null +++ b/icon.svg @@ -0,0 +1 @@ + diff --git a/icon.svg.import b/icon.svg.import new file mode 100644 index 0000000..638f0a0 --- /dev/null +++ b/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bc1p2dt0lueoe" +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/project.godot b/project.godot new file mode 100644 index 0000000..4fb437d --- /dev/null +++ b/project.godot @@ -0,0 +1,47 @@ +; 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="CodingLand" +run/main_scene="res://Scenes/Root.tscn" +config/features=PackedStringArray("4.2", "C#", "Mobile") +config/icon="res://icon.svg" + +[dotnet] + +project/assembly_name="CodingLand" + +[input] + +move_up={ +"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":87,"key_label":0,"unicode":119,"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,"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,"echo":false,"script":null) +] +} +move_right={ +"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":68,"key_label":0,"unicode":100,"echo":false,"script":null) +] +} + +[rendering] + +renderer/rendering_method="mobile"