From fc84f8889f0ed2a3afbbf876c177844f6c3f3f7c Mon Sep 17 00:00:00 2001 From: cmod31 Date: Mon, 27 Feb 2023 19:34:15 +0100 Subject: [PATCH] fixed enemy sticking to player bug without weird workaround --- scenes/tiles/enemies/slime.tscn | 6 +++++- scenes/tiles/first_debug_tile.tscn | 2 +- src/scene-scripts/player.cs | 9 ++------- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/scenes/tiles/enemies/slime.tscn b/scenes/tiles/enemies/slime.tscn index 040b23c..70da910 100644 --- a/scenes/tiles/enemies/slime.tscn +++ b/scenes/tiles/enemies/slime.tscn @@ -42,7 +42,11 @@ height = 46.0 [node name="slime" type="CharacterBody2D"] collision_layer = 8 collision_mask = 9 -collision_priority = 2.0 +collision_priority = 20.0 +motion_mode = 1 +floor_stop_on_slope = false +floor_constant_speed = true +platform_on_leave = 2 script = ExtResource("1_l1742") [node name="animated_sprite_2d" type="AnimatedSprite2D" parent="."] diff --git a/scenes/tiles/first_debug_tile.tscn b/scenes/tiles/first_debug_tile.tscn index 2cbfa19..6cc653c 100644 --- a/scenes/tiles/first_debug_tile.tscn +++ b/scenes/tiles/first_debug_tile.tscn @@ -8,7 +8,7 @@ radius = 33.1361 [node name="rigid_body_2d" type="RigidBody2D"] collision_layer = 2 collision_mask = 11 -collision_priority = 20.0 +collision_priority = 25.0 gravity_scale = 0.0 [node name="Sprite2D" type="Sprite2D" parent="."] diff --git a/src/scene-scripts/player.cs b/src/scene-scripts/player.cs index 03f2986..f0ce3ec 100644 --- a/src/scene-scripts/player.cs +++ b/src/scene-scripts/player.cs @@ -10,7 +10,7 @@ public partial class player : CharacterBody2D public AnimatedSprite2D animatedSprite; public Marker2D rotCenter; public RayCast2D dialogRayCast; - public static Vector2 globalPlayerPosition; //for enemy path finding with delay for less bugs + public static Vector2 globalPlayerPosition; //console cheats: private static Camera2D cheatCam; private static Camera2D mainCam; @@ -27,20 +27,15 @@ public partial class player : CharacterBody2D } public override void _PhysicsProcess(double delta) { + globalPlayerPosition = Position; if (allowMovement) movement = Input.GetVector("move_left", "move_right", "move_up", "move_down"); else movement = Vector2.Zero; if (Math.Round(movement.Length(), 0) != 0) rotCenter.Rotation = new Vector2((float)Math.Round(movement.X, 0), (float)Math.Round(movement.Y, 0)).Angle(); MoveAndCollide(movement * speed * 200 * (float)delta); } - void GlobalPlayerPosition() - { - if (Mathf.Round(GetNode("globalposition_timer").TimeLeft) == 0) - globalPlayerPosition = Position; - } public override void _Process(double delta) { - GlobalPlayerPosition(); if (Input.IsActionJustPressed("ui_accept") && dialogRayCast.IsColliding() && allowMovement) GetNode("dialog_bubble").GetDialog(dialogRayCast.GetCollider().Get("file").AsString(), (Area2D)dialogRayCast.GetCollider());