diff --git a/DungeonShooting_Godot/scene/test/TestPerfectPixel.tscn b/DungeonShooting_Godot/scene/test/TestPerfectPixel.tscn index 9a5cc21..5e7cd81 100644 --- a/DungeonShooting_Godot/scene/test/TestPerfectPixel.tscn +++ b/DungeonShooting_Godot/scene/test/TestPerfectPixel.tscn @@ -30,4 +30,3 @@ [node name="TestPerfectPixelScene" parent="SubViewport" node_paths=PackedStringArray("SubViewportContainer") instance=ExtResource("1_l3du1")] SubViewportContainer = NodePath("../..") -Type = 1 diff --git a/DungeonShooting_Godot/scene/test/TestPerfectPixelScene.tscn b/DungeonShooting_Godot/scene/test/TestPerfectPixelScene.tscn index 02437b0..e8bcfc6 100644 --- a/DungeonShooting_Godot/scene/test/TestPerfectPixelScene.tscn +++ b/DungeonShooting_Godot/scene/test/TestPerfectPixelScene.tscn @@ -1,15 +1,20 @@ -[gd_scene load_steps=4 format=3 uid="uid://b3ybffxcq0kkb"] +[gd_scene load_steps=6 format=3 uid="uid://b3ybffxcq0kkb"] [ext_resource type="Script" path="res://src/test/TestPerfectPixelScene.cs" id="1_u6ihh"] [ext_resource type="TileSet" uid="uid://b00g22o1cqhe8" path="res://resource/map/tileSet/map1/TileSet1.tres" id="1_wc2ux"] [ext_resource type="Texture2D" uid="uid://dto03bc2qbhnj" path="res://resource/sprite/shell/Shell0001.png" id="3_kc4l0"] +[ext_resource type="SpriteFrames" uid="uid://n11thtali6es" path="res://resource/spriteFrames/role/Role0001.tres" id="4_6nerw"] -[node name="TestPerfectPixelScene" type="Node2D" node_paths=PackedStringArray("FpsLabel", "Camera2D")] +[sub_resource type="RectangleShape2D" id="RectangleShape2D_tmsub"] + +[node name="TestPerfectPixelScene" type="Node2D" node_paths=PackedStringArray("Player", "FpsLabel", "Camera2D")] script = ExtResource("1_u6ihh") +Player = NodePath("Root/Player") FpsLabel = NodePath("CanvasLayer/FPS") Camera2D = NodePath("Camera2D") Speed = 150.0 -Type = 1 +CameraRecoveryScale = 7.0 +Type = 2 [node name="TileMap" type="TileMap" parent="."] tile_set = ExtResource("1_wc2ux") @@ -19,6 +24,7 @@ [node name="Camera2D" type="Camera2D" parent="."] position = Vector2(0, -1) rotation = 0.798384 +process_callback = 0 [node name="Root" type="Node2D" parent="."] @@ -56,6 +62,16 @@ position = Vector2(169.315, 56.36) texture = ExtResource("3_kc4l0") +[node name="Player" type="CharacterBody2D" parent="Root"] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Root/Player"] +shape = SubResource("RectangleShape2D_tmsub") + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="Root/Player"] +sprite_frames = ExtResource("4_6nerw") +animation = &"idle" +autoplay = "idle" + [node name="CanvasLayer" type="CanvasLayer" parent="."] [node name="FPS" type="Label" parent="CanvasLayer"] diff --git a/DungeonShooting_Godot/src/test/TestPerfectPixelScene.cs b/DungeonShooting_Godot/src/test/TestPerfectPixelScene.cs index af7acb0..1878e8a 100644 --- a/DungeonShooting_Godot/src/test/TestPerfectPixelScene.cs +++ b/DungeonShooting_Godot/src/test/TestPerfectPixelScene.cs @@ -5,11 +5,15 @@ { public enum HandlerType { - Normal, - UseHandler + UnHandler, + NormalHandler, + OffsetHandler } [Export] + public CharacterBody2D Player; + + [Export] public Label FpsLabel; [Export] @@ -19,6 +23,9 @@ public float Speed = 50; [Export] + public float CameraRecoveryScale = 5; + + [Export] public SubViewportContainer SubViewportContainer; [Export] @@ -37,19 +44,30 @@ public override void _Process(double delta) { - FpsLabel.Text = "FPS: " + Engine.GetFramesPerSecond(); InputManager.Update((float)delta); - var dir = InputManager.MoveAxis; - if (dir != Vector2.Zero) - { - _cameraPos += dir * Speed * (float)delta; - } - if (Type == HandlerType.Normal) + + } + + public override void _PhysicsProcess(double delta) + { + FpsLabel.Text = "FPS: " + Engine.GetFramesPerSecond(); + Player.Velocity = InputManager.MoveAxis * Speed; + Player.MoveAndSlide(); + + var playerPos = Player.GlobalPosition; + //_cameraPos = playerPos; + _cameraPos = _cameraPos.MoveToward(playerPos, playerPos.DistanceTo(_cameraPos) * (float)delta * CameraRecoveryScale); + + if (Type == HandlerType.UnHandler) + { + Camera2D.GlobalPosition = _cameraPos; + } + else if (Type == HandlerType.NormalHandler) { Camera2D.GlobalPosition = _cameraPos.Round(); } - else if (Type == HandlerType.UseHandler) + else if (Type == HandlerType.OffsetHandler) { if (_shaderMaterial != null) { @@ -59,6 +77,5 @@ Camera2D.GlobalPosition = cameraPosition.Round(); } } - //Debug.Log("CameraPos: " + cameraPosition); } }