From 938feb9b355cdf95c2b7f68348a406c5f55283ec Mon Sep 17 00:00:00 2001 From: Rendo Date: Thu, 27 Nov 2025 01:02:01 +0500 Subject: [PATCH] Spectator --- project.godot | 10 ++++++++++ scenes/{player.tscn => molikman.tscn} | 0 scenes/spectator.tscn | 7 +++++++ scripts/player/spectator.gd | 20 ++++++++++++++++++++ scripts/player/spectator.gd.uid | 1 + 5 files changed, 38 insertions(+) rename scenes/{player.tscn => molikman.tscn} (100%) create mode 100644 scenes/spectator.tscn create mode 100644 scripts/player/spectator.gd create mode 100644 scripts/player/spectator.gd.uid diff --git a/project.godot b/project.godot index a2a4bd5..b1a0edc 100644 --- a/project.godot +++ b/project.godot @@ -140,6 +140,16 @@ plr_bomb={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":52,"key_label":0,"unicode":52,"location":0,"echo":false,"script":null) ] } +spc_up={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) +] +} +spc_down={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194326,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} [layer_names] diff --git a/scenes/player.tscn b/scenes/molikman.tscn similarity index 100% rename from scenes/player.tscn rename to scenes/molikman.tscn diff --git a/scenes/spectator.tscn b/scenes/spectator.tscn new file mode 100644 index 0000000..afc26b5 --- /dev/null +++ b/scenes/spectator.tscn @@ -0,0 +1,7 @@ +[gd_scene load_steps=2 format=3 uid="uid://ckjabjcvgki6n"] + +[ext_resource type="Script" uid="uid://cikw7fcykkpd5" path="res://scripts/player/spectator.gd" id="1_jjbhc"] + +[node name="Spectator" type="Camera3D"] +transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 0, 0, 0) +script = ExtResource("1_jjbhc") diff --git a/scripts/player/spectator.gd b/scripts/player/spectator.gd new file mode 100644 index 0000000..7b77056 --- /dev/null +++ b/scripts/player/spectator.gd @@ -0,0 +1,20 @@ +extends Camera3D + +@export var SENSITIVITY = 0.02 +@export var SPEED = 10.0 + +func _process(delta: float) -> void: + var xz_plane = Input.get_vector("plr_strafe_l","plr_strafe_r","plr_forward","plr_back") + var y = Input.get_axis("spc_down","spc_up") + + var direction = Vector3(xz_plane.x,y,xz_plane.y) + global_position += global_basis * direction * SPEED * delta + +func rotate_camera(x,y) -> void: + rotate_y(x) + rotation.x = clamp(rotation.x + y,-PI/2,PI/2) + orthonormalize() + +func _input(event: InputEvent) -> void: + if event is InputEventMouseMotion: + rotate_camera(-event.relative.x * SENSITIVITY,-event.relative.y * SENSITIVITY) diff --git a/scripts/player/spectator.gd.uid b/scripts/player/spectator.gd.uid new file mode 100644 index 0000000..009df30 --- /dev/null +++ b/scripts/player/spectator.gd.uid @@ -0,0 +1 @@ +uid://cikw7fcykkpd5