using Godot; using System; public partial class Player : CharacterBody2D { [Export] public Node2D FlashlightUI; [Export] public Node2D FlashlightWorld; [Export] public const float Speed = 50.0f; protected AnimatedSprite2D Sprite; public override void _Ready() { base._Ready(); Sprite = (AnimatedSprite2D)FindChild("AnimatedSprite2D"); } public override void _PhysicsProcess(double delta) { Vector2 velocity = Velocity; // Get the input direction and handle the movement/deceleration. // As good practice, you should replace UI actions with custom gameplay actions. Vector2 direction = Input.GetVector("ui_left", "ui_right", "ui_up", "ui_down"); if (direction != Vector2.Zero) { velocity.X = direction.X * Speed; velocity.Y = direction.Y * Speed; } else { velocity.X = Mathf.MoveToward(Velocity.X, 0, Speed); velocity.Y = Mathf.MoveToward(Velocity.Y, 0, Speed); } Velocity = velocity; MoveAndSlide(); } public override void _Input(InputEvent @event) { base._Input(@event); if (@event is InputEventMouseMotion eventMouseMotion) { FlashlightUI.Position = eventMouseMotion.Position; FlashlightWorld.Position = eventMouseMotion.Position - new Vector2(128F, 96F); } } }