From 72434b2480ef90c2ca43d08016a49e24f2b79620 Mon Sep 17 00:00:00 2001 From: JaN0h4ck <95576868+JaN0h4ck@users.noreply.github.com> Date: Thu, 21 Mar 2024 09:28:53 +0100 Subject: [PATCH] Move GetNode calls to _Ready function --- src/player.cs | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/player.cs b/src/player.cs index ba7c562..2b2b0b4 100644 --- a/src/player.cs +++ b/src/player.cs @@ -5,6 +5,8 @@ public partial class player : CharacterBody3D public Vector3 direction; public Vector2 gpCamVector; public bool gamepadMode; + private Marker3D cameraCenter {get; set;} + private MeshInstance3D collisionBody {get; set;} [Export] float speed = 5.0f; [Export] float jumpVelocity = 5f; [Export] float gravity = 14f; @@ -12,6 +14,11 @@ public partial class player : CharacterBody3D [Export(PropertyHint.Range, "-90,0,1")] float minCamPitch = -50f; [Export(PropertyHint.Range, "0,90,1")] float maxCamPitch = 30f; + public override void _Ready() { + cameraCenter = GetNode("camera_center"); + collisionBody = GetNode("collision/body"); + } + public override void _Process(double delta) { //uncapturing the mouse disables PC movement but still simulates gravity @@ -22,19 +29,19 @@ public partial class player : CharacterBody3D maybe rotate extra collisions separately for invisible lag that may occur**/ if (direction != Vector3.Zero && Input.MouseMode == Input.MouseModeEnum.Captured | gamepadMode) { - Vector3 bodyRotation = GetNode("collision/body").Rotation; + Vector3 bodyRotation = collisionBody.Rotation; bodyRotation.Y = Mathf.LerpAngle(bodyRotation.Y,Mathf.Atan2(-direction.X, -direction.Z), (float)delta * speed); - GetNode("collision/body").Rotation = bodyRotation; + collisionBody.Rotation = bodyRotation; } //camera gamepad part (needs constant movement so _Input event wouldn't work with this like mouseinput) gpCamVector = Input.GetVector("gp_cam_left", "gp_cam_right", "gp_cam_up", "gp_cam_down"); if(gpCamVector != Vector2.Zero) { - Vector3 camRot = GetNode("camera_center").RotationDegrees; + Vector3 camRot = cameraCenter.RotationDegrees; camRot.Y -= gpCamVector.X * camSensitivity * (float)delta * 500; camRot.X -= gpCamVector.Y * camSensitivity * (float)delta * 500; camRot.X = Mathf.Clamp(camRot.X, minCamPitch, maxCamPitch); //prevents camera from going endlessly around the player - GetNode("camera_center").RotationDegrees = camRot; + cameraCenter.RotationDegrees = camRot; } } public override void _PhysicsProcess(double delta) @@ -65,13 +72,13 @@ public partial class player : CharacterBody3D public override void _Input(InputEvent @event) { gamepadMode = @event is InputEventJoypadButton | @event is InputEventJoypadMotion; - Vector3 camRot = GetNode("camera_center").RotationDegrees; + Vector3 camRot = cameraCenter.RotationDegrees; if (@event is InputEventMouseMotion mouseMotion && Input.MouseMode == Input.MouseModeEnum.Captured) { camRot.Y -= mouseMotion.Relative.X * camSensitivity; camRot.X -= mouseMotion.Relative.Y * camSensitivity; } camRot.X = Mathf.Clamp(camRot.X, minCamPitch, maxCamPitch); //prevents camera from going endlessly around the player - GetNode("camera_center").RotationDegrees = camRot; + cameraCenter.RotationDegrees = camRot; } }