From 0a90c41a23296ede769f688761d472f77dd332b3 Mon Sep 17 00:00:00 2001 From: vaporvee Date: Sun, 11 Dec 2022 21:44:18 +0100 Subject: [PATCH] more efficient ray cast position code --- src/scene-scripts/player.cs | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/scene-scripts/player.cs b/src/scene-scripts/player.cs index 83c3973..a66b331 100644 --- a/src/scene-scripts/player.cs +++ b/src/scene-scripts/player.cs @@ -3,10 +3,9 @@ using System; public partial class player : CharacterBody2D { - [Export] - public string playerName; - [Export] - public int speed = 400; + [Export] public string playerName; + [Export] public int speed = 400; + [Export] public int rayCastLength = 64; public Vector2 movement; public AnimatedSprite2D animatedSprite; @@ -27,16 +26,13 @@ public partial class player : CharacterBody2D public override void _Process(double delta) { //set ray_cast target position - int raylength = 64; - if (Input.IsActionJustPressed("move_right")) GetNode("ray_cast_2d").TargetPosition = new Vector2(raylength, 0); - if (Input.IsActionJustPressed("move_left")) GetNode("ray_cast_2d").TargetPosition = new Vector2(-raylength, 0); - if (Input.IsActionJustPressed("move_down")) GetNode("ray_cast_2d").TargetPosition = new Vector2(0, raylength); - if (Input.IsActionJustPressed("move_up")) GetNode("ray_cast_2d").TargetPosition = new Vector2(0, -raylength); + Vector2 rayCastPosition = new Vector2((float)Math.Round(movement.x), (float)Math.Round(movement.y)) * rayCastLength; + if (rayCastPosition.Length() != 0) GetNode("ray_cast_2d").TargetPosition = rayCastPosition; //call event in raycasted object if (Input.IsActionJustPressed("ui_accept") && GetNode("ray_cast_2d").IsColliding()) GetNode("ray_cast_2d").GetCollider().Call("OnInteraction", playerName); //animation system (with controller support wcih cant get normalized vector) - if (movement.Length() != 0) + if (movement.Length() != 0) animatedSprite.Play(); else {