From bdde71f8295fc5a970bbf9c310e41a7a12fd0568 Mon Sep 17 00:00:00 2001 From: KevinKor01 Date: Sun, 29 Jun 2025 21:26:14 +0300 Subject: [PATCH] Added Cursor Node Digital cursor, follows & hides mouse Hide Mouse can be disabled by ShowMouse = true --- game/Main.tscn | 11 +++++++++ game/Scripts/CursorScript.gd | 29 ++++++++++++++++++++++ game/Scripts/CursorScript.gd.uid | 1 + game/Textures/svg/Cursor.svg | 1 + game/Textures/svg/Cursor.svg.import | 37 +++++++++++++++++++++++++++++ 5 files changed, 79 insertions(+) create mode 100644 game/Main.tscn create mode 100644 game/Scripts/CursorScript.gd create mode 100644 game/Scripts/CursorScript.gd.uid create mode 100644 game/Textures/svg/Cursor.svg create mode 100644 game/Textures/svg/Cursor.svg.import diff --git a/game/Main.tscn b/game/Main.tscn new file mode 100644 index 0000000..41fe789 --- /dev/null +++ b/game/Main.tscn @@ -0,0 +1,11 @@ +[gd_scene load_steps=3 format=3 uid="uid://cdeww5uc20038"] + +[ext_resource type="Script" uid="uid://ccydu80643k4s" path="res://Scripts/CursorScript.gd" id="1_uu6xs"] +[ext_resource type="Texture2D" uid="uid://d0hckoql2xnbq" path="res://Textures/svg/Cursor.svg" id="2_r0du0"] + +[node name="Cursor" type="Node2D"] +script = ExtResource("1_uu6xs") +ShowMouse = true + +[node name="CursorTexture" type="Sprite2D" parent="."] +texture = ExtResource("2_r0du0") diff --git a/game/Scripts/CursorScript.gd b/game/Scripts/CursorScript.gd new file mode 100644 index 0000000..4bf7013 --- /dev/null +++ b/game/Scripts/CursorScript.gd @@ -0,0 +1,29 @@ +extends Node2D +@onready var Cursor = $Cursor +@export var ShowMouse = false +var old_mouse_pos = Vector2.ZERO +var mouse_velocity = Vector2.ZERO +#var speed = 5000.0 + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + if not ShowMouse : Input.mouse_mode = Input.MOUSE_MODE_HIDDEN + old_mouse_pos = get_viewport().get_mouse_position() + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + var current_mouse_pos = get_viewport().get_mouse_position() + + mouse_velocity = current_mouse_pos - old_mouse_pos + + if mouse_velocity.length_squared()>0.1: + rotation = mouse_velocity.angle() + + var direction_to_mouse = (current_mouse_pos - global_position).normalized() + global_position = current_mouse_pos + + old_mouse_pos = current_mouse_pos + pass diff --git a/game/Scripts/CursorScript.gd.uid b/game/Scripts/CursorScript.gd.uid new file mode 100644 index 0000000..64d2b9f --- /dev/null +++ b/game/Scripts/CursorScript.gd.uid @@ -0,0 +1 @@ +uid://ccydu80643k4s diff --git a/game/Textures/svg/Cursor.svg b/game/Textures/svg/Cursor.svg new file mode 100644 index 0000000..c2d5ddb --- /dev/null +++ b/game/Textures/svg/Cursor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/game/Textures/svg/Cursor.svg.import b/game/Textures/svg/Cursor.svg.import new file mode 100644 index 0000000..06c95d0 --- /dev/null +++ b/game/Textures/svg/Cursor.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d0hckoql2xnbq" +path="res://.godot/imported/Cursor.svg-2229e5b0ea8173aa59b52a7080f1b61c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Textures/svg/Cursor.svg" +dest_files=["res://.godot/imported/Cursor.svg-2229e5b0ea8173aa59b52a7080f1b61c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false