From da1fde4062ee7264c5c6fd5dabf6d3a6d2194948 Mon Sep 17 00:00:00 2001 From: Marco Date: Tue, 4 Feb 2025 18:17:36 +0100 Subject: [PATCH] Camera Player Detection sweep --- Scenes/Actors/Camera.tscn | 11 +- Scenes/test.tscn | 5 +- Scripts/Components/CameraPlayerDetection.cs | 129 ++++++++++++++++++++ 3 files changed, 139 insertions(+), 6 deletions(-) create mode 100644 Scripts/Components/CameraPlayerDetection.cs diff --git a/Scenes/Actors/Camera.tscn b/Scenes/Actors/Camera.tscn index c9764cdf..ee32ab61 100644 --- a/Scenes/Actors/Camera.tscn +++ b/Scenes/Actors/Camera.tscn @@ -2,7 +2,7 @@ [ext_resource type="Script" path="res://Scripts/Actors/Camera.cs" id="1_2qb38"] [ext_resource type="SpriteFrames" uid="uid://yfxog8pww6ih" path="res://Resources/Sprites/Camera.tres" id="2_omkb8"] -[ext_resource type="Script" path="res://Scripts/Components/ProximityPlayerDetection.cs" id="3_1qxk5"] +[ext_resource type="Script" path="res://Scripts/Components/CameraPlayerDetection.cs" id="3_ax0x5"] [sub_resource type="CircleShape2D" id="CircleShape2D_nkpag"] @@ -14,7 +14,7 @@ size = Vector2(8, 12) [node name="Camera" type="CharacterBody2D" node_paths=PackedStringArray("_playerDetection")] collision_layer = 16 -collision_mask = 73 +collision_mask = 75 script = ExtResource("1_2qb38") Health = 1.0 WalkSpeed = 0.0 @@ -29,12 +29,13 @@ frame_progress = 0.779565 shape = SubResource("CircleShape2D_nkpag") [node name="PlayerDetection" type="Area2D" parent="."] -visible = false collision_layer = 16 collision_mask = 2 -script = ExtResource("3_1qxk5") +script = ExtResource("3_ax0x5") +SweepSpeed = 10.0 +Debug = true -[node name="PlayerDetectionArea" type="CollisionShape2D" parent="PlayerDetection"] +[node name="CollisionShape2D" type="CollisionShape2D" parent="PlayerDetection"] shape = SubResource("CircleShape2D_gs7jc") [node name="DamageHitbox" type="Area2D" parent="."] diff --git a/Scenes/test.tscn b/Scenes/test.tscn index 013e5093..5b12956a 100644 --- a/Scenes/test.tscn +++ b/Scenes/test.tscn @@ -50,7 +50,7 @@ _solidLayer = NodePath("../Solid2") [node name="Solid2" type="TileMapLayer" parent="Factory Tilemaps" groups=["Solid"]] use_parent_material = true -tile_map_data = PackedByteArray("AADL//L/AAAAAAQAAADL//P/AAAAAAQAAADL//T/AAAAAAQAAADL//X/AAAAAAQAAADL//b/AAAAAAQAAADL//f/AAAAAAQAAADL//j/AAAAAAQAAADL//n/AAAAAAQAAADL//r/AAAAAAQAAADL//v/AAAAAAQAAADL//z/AAAAAAQAAADS//T/AAAAAAcAAADM//H/AAABAAcAAADN//H/AAABAAcAAADO//H/AAABAAcAAADP//H/AAABAAcAAADT//T/AAABAAcAAADU//T/AAABAAcAAADV//T/AAABAAcAAADW//T/AAABAAcAAADX//T/AAABAAcAAADO//f/AAADAAAAAADN//f/AAADAAAAAADM//f/AAADAAAAAADS//f/AAADAAAAAADO//r/AAADAAAAAADN//r/AAADAAAAAADM//r/AAADAAAAAADS//r/AAADAAAAAADT//r/AAADAAAAAADU//r/AAADAAAAAADV//r/AAADAAAAAADW//r/AAADAAAAAADX//r/AAADAAAAAADa//f/AAAAAAYAAADa//n/AAAAAAYAAADa//r/AAAAAAYAAADa//v/AAAAAAYAAADa//z/AAAAAAYAAADa//3/AAAAAAYAAADa//7/AAAAAAYAAADL//3/AAAAAAQAAADL//7/AAAAAAQAAADa////AAAAAAYAAADa/wAAAAAAAAYAAADY//r/AAADAAAAAADZ//r/AAADAAAAAADM//3/AAAEAAUAAADN//3/AAAEAAUAAADO//3/AAAEAAUAAADP//3/AAAEAAUAAADQ//3/AAAEAAUAAADR//3/AAAEAAUAAADS//3/AAAEAAUAAADT//3/AAAFAAUAAADX//3/AAADAAUAAADY//3/AAAEAAUAAADZ//3/AAAEAAUAAADX//7/AAADAAcAAADY////AAAEAAUAAADZ////AAAEAAUAAADT//7/AAAFAAcAAADS//7/AAAEAAUAAADR//7/AAAEAAUAAADQ//7/AAAEAAUAAADP//7/AAAEAAUAAADO//7/AAAEAAUAAADN//7/AAAEAAUAAADM//7/AAAEAAUAAADX/wEAAAAFAAcAAADW/wEAAAAEAAUAAADV/wEAAAAEAAUAAADU/wEAAAAEAAUAAADT/wEAAAAEAAUAAADX/wAAAAADAAYAAAC2////AAADAAAAAAC1////AAADAAAAAAC0////AAADAAAAAACz////AAADAAAAAACy////AAADAAAAAACx////AAADAAAAAACx//7/AAADAAAAAACx//3/AAADAAAAAAC2/wIAAAADAAAAAAC1/wIAAAADAAAAAAC0/wIAAAADAAAAAACz/wIAAAADAAAAAACy/wIAAAADAAAAAACx/wIAAAADAAAAAACw/wIAAAADAAAAAACv/wIAAAADAAAAAACu/wIAAAADAAAAAACt/wIAAAADAAAAAACs/wIAAAADAAAAAACu////AAADAAAAAACu//7/AAADAAAAAACu//3/AAADAAAAAACt////AAADAAAAAACs////AAADAAAAAACr////AAADAAAAAACq////AAADAAAAAACp////AAADAAAAAACr/wIAAAADAAAAAACq/wIAAAADAAAAAACp/wIAAAADAAAAAADQ/wEAAAADAAUAAADR/wEAAAAEAAUAAADS/wEAAAAEAAUAAADQ/wIAAAADAAYAAADQ/wMAAAADAAcAAADR/wMAAAAEAAUAAADX////AAADAAUAAADY//7/AAAEAAUAAADZ//7/AAAEAAUAAADL/wkAAAAEAAQAAADM/wAAAQAAAAAAAQDM/wEAAQAAAAAAAQDM/wIAAQAAAAAAAQDM/wMAAQAAAAAAAQDR//b/AQAAAAAAAgDH//L/AQAAAAAABQDG//f/AAADAAAAAADG//r/AQAAAAAABwDR//X/AQAAAAAAAQDM//T/AAABAAEAAADN//T/AAABAAEAAADO//T/AAABAAEAAADP//T/AAABAAEAAADQ//T/AAABAAEAAADR//T/AAABAAEAAADS//X/AAAEAAEAAADS//b/AAAEAAEAAADT//X/AAABAAEAAADT//b/AAABAAEAAADV//b/AAABAAEAAADV//X/AAABAAEAAADX//b/AAABAAEAAADX//X/AAABAAEAAADZ//b/AAABAAEAAADZ//X/AAABAAEAAADa//j/AAAAAAYAAADL////AAACAAYAAADL/wAAAAACAAYAAADL/wEAAAACAAYAAADL/wIAAAACAAYAAADL/wMAAAACAAYAAADL/wQAAAACAAYAAADL/wUAAAACAAYAAADL/wYAAAACAAYAAADL/wcAAAACAAYAAADL/wgAAAACAAYAAADa/wEAAAAAAAYAAADa/wIAAAAAAAYAAADa/wMAAAAAAAYAAADa/wQAAAAAAAYAAADa/wUAAAAAAAYAAADa/wYAAAAAAAYAAADa/wcAAAAAAAYAAADa/wgAAAAAAAYAAADa/wkAAAAAAAYAAADa/woAAAAAAAYAAADa/wsAAAAAAAYAAADa/wwAAAAAAAYAAADa/w0AAAAAAAYAAADa/w4AAAAAAAYAAADZ/w8AAAABAAUAAADY/w8AAAABAAUAAADX/w8AAAABAAUAAADW/w8AAAABAAUAAADV/w8AAAABAAUAAADU/w8AAAABAAUAAADT/w8AAAABAAUAAADS/w8AAAABAAUAAADR/w8AAAABAAUAAADQ/w8AAAABAAUAAADP/w8AAAABAAUAAADO/w8AAAABAAUAAADN/w8AAAABAAUAAADM/w8AAAABAAUAAADL/w4AAAACAAYAAADL/w0AAAAFAAQAAADK/w4AAAABAAUAAADJ/w4AAAABAAUAAADI/w4AAAABAAUAAADH/w4AAAABAAUAAADG/w4AAAABAAUAAADF/w4AAAABAAUAAADE/w4AAAABAAUAAADL/wsAAAAFAAEAAADL/woAAAAFAAEAAADK/woAAAABAAEAAADI/woAAAABAAEAAADH/woAAAABAAEAAADH/wkAAAABAAEAAADI/wkAAAABAAEAAADK/wkAAAABAAEAAADB/woAAAABAAEAAADC/woAAAABAAEAAADC/wkAAAABAAEAAADB/wkAAAABAAEAAAC//woAAAABAAEAAAC//wkAAAABAAEAAADJ/wkAAAADAAEAAADG/woAAAADAAEAAADG/wkAAAADAAEAAADD/woAAAADAAEAAADD/wkAAAADAAEAAADA/woAAAADAAEAAADA/wkAAAADAAEAAADD/w4AAAABAAUAAADC/w4AAAABAAUAAADB/w4AAAABAAUAAADA/w4AAAABAAUAAAC//w4AAAABAAUAAADU//b/AAADAAEAAADU//X/AAADAAEAAADW//b/AAADAAEAAADW//X/AAADAAEAAADY//b/AAADAAEAAADY//X/AAADAAEAAADT/wkAAQAAAAAAAgDU/wkAAQAAAAAAAgDU/woAAQAAAAAAAgDT/woAAQAAAAAAAgDT/wsAAQAAAAAAAgDU/wsAAQAAAAAAAgDU/wwAAQAAAAAAAgDT/wwAAQAAAAAAAgDS/wwAAQAAAAAAAgDR/wwAAQAAAAAAAgDR/wsAAQAAAAAAAgDS/wsAAQAAAAAAAgDS/woAAQAAAAAAAgDR/woAAQAAAAAAAgDS/wkAAQAAAAAAAgDR/wkAAQAAAAAAAgDM/woAAAAGAAMAAAC+/w0AAAAFAAQAAAC+/wkAAAAEAAQAAADB/wsAAQAAAAAAAgC8/w0AAQAAAAAAAgDA/wsAAQAAAAAAAQDZ/w0AAQAAAAAAAQDZ/w4AAQAAAAAAAQDY/w4AAQAAAAAAAQDM/w4AAQAAAAAAAQC9/wgAAAACAAEAAAC8/wgAAAACAAEAAAC7/wgAAAACAAEAAAC4/wgAAAACAAEAAAC3/wgAAAACAAEAAAC2/wgAAAACAAEAAAC1/wgAAAACAAYAAAC1/wkAAAACAAYAAAC1/woAAAACAAYAAAC1/wsAAAACAAYAAAC1/wwAAAACAAYAAAC1/w0AAAACAAYAAAC2/w4AAAABAAUAAAC3/w4AAAABAAUAAAC4/w4AAAABAAUAAAC5/w4AAAABAAUAAAC6/w4AAAABAAUAAAC7/w4AAAABAAUAAAC8/w4AAAABAAUAAAC9/w4AAAABAAUAAAC1/w4AAAAAAAkAAAC+/wgAAAAAAAYAAAC+/wcAAAAAAAYAAAC7/wcAAAACAAEAAAC8/wcAAAACAAEAAAC9/wcAAAACAAEAAAC4/wcAAAACAAEAAAC3/wcAAAACAAEAAAC2/wcAAAACAAEAAAC2/wYAAAABAAcAAAC4/wYAAAADAAQAAAC7/wYAAAACAAQAAAC8/wYAAAABAAQAAAC9/wYAAAABAAQAAAC5/wMAAAADAAEAAAC6/wMAAAADAAEAAAC7/wMAAAAFAAEAAAC4/wMAAAABAAEAAAC3/wMAAAAAAAQAAAC3/wQAAAAAAAQAAAC4/wIAAAABAAEAAAC5/wIAAAADAAEAAAC6/wIAAAADAAEAAAC7/wIAAAAFAAEAAAC3/wYAAAABAAcAAAC3/wUAAAACAAYAAAC1/wcAAAACAAYAAAC5//7/AAADAAEAAAC5////AAADAAEAAAC8//7/AAADAAEAAAC8////AAADAAEAAAC9////AAABAAEAAAC+////AAABAAEAAAC/////AAAAAAYAAAC///7/AAAAAAYAAAC+//7/AAABAAEAAAC9//7/AAABAAEAAAC3////AAABAAEAAAC4////AAABAAEAAAC4//7/AAABAAEAAAC3//7/AAABAAEAAAC6//7/AAABAAEAAAC7//7/AAABAAEAAAC7////AAABAAEAAAC6////AAABAAEAAAC+/wYAAAABAAUAAAC4//3/AAABAAcAAAC5//3/AAABAAcAAAC6//3/AAABAAcAAAC7//3/AAABAAcAAAC8//3/AAABAAcAAAC9//3/AAABAAcAAAC+//3/AAABAAcAAAC3//3/AAAAAAcAAAC3/wIAAAAFAAQAAADQ/wgAAAAGAAUAAADR/wgAAAAHAAUAAADS/wgAAAAHAAUAAADT/wgAAAAHAAUAAADU/wgAAAAHAAUAAADV/wgAAAAIAAUAAADV/wkAAAAIAAYAAADV/woAAAAIAAYAAADV/wsAAAAIAAYAAADV/wwAAAAIAAYAAADV/w0AAAAIAAcAAADU/w0AAAAHAAcAAADT/w0AAAAHAAcAAADS/w0AAAAHAAcAAADR/w0AAAAHAAcAAADQ/w0AAAAGAAcAAADQ/wwAAAAGAAYAAADQ/wsAAAAGAAYAAADQ/woAAAAGAAYAAADQ/wkAAAAGAAYAAADG/wgAAAACAAQAAADD/wgAAAADAAQAAADC/wcAAAACAAYAAADD/wMAAAACAAEAAADE/wMAAAACAAEAAADF/wMAAAACAAEAAADG/wMAAAACAAEAAADH/wMAAAACAAEAAADI/wMAAAACAAEAAADJ/wMAAAACAAEAAADK/wMAAAAAAAYAAADK/wQAAAAAAAYAAADK/wUAAAAAAAYAAADK/wYAAAAAAAYAAADK/wcAAAAAAAYAAADJ/wgAAAABAAQAAADI/wgAAAABAAQAAADH/wgAAAABAAQAAADJ/woAAAADAAEAAADI/wsAAQAAAAAACQDD/wsAAQAAAAAACQDC/wsAAQAAAAAACQDY//f/AQAAAAAABgDZ//n/AQAAAAAAAQDY//n/AQAAAAAAAQDJ//f/AAADAAAAAADK//f/AAADAAAAAADF//f/AAADAAAAAADK////AAABAAUAAADJ////AAABAAUAAADI////AAABAAUAAADH////AAABAAUAAADG////AAABAAUAAADF////AAABAAUAAADE////AAABAAUAAADD//7/AAACAAYAAADD//3/AAACAAYAAADD//z/AAACAAYAAADD//v/AAACAAYAAADD//r/AAACAAYAAADD//n/AAACAAYAAADD//j/AAACAAYAAADD//f/AAACAAYAAADD//b/AAACAAYAAADD//X/AAACAAYAAADD//T/AAACAAYAAADD//P/AAACAAYAAADD//L/AAACAAYAAADD//H/AAACAAYAAADE/+//AAABAAcAAADF/+//AAABAAcAAADG/+//AAABAAcAAADH/+//AAABAAcAAADI/+//AAABAAcAAADJ/+//AAABAAcAAADK/+//AAABAAcAAADL//H/AAAAAAYAAADL//D/AAAAAAYAAADD//D/AAACAAYAAADE//D/AAABAAEAAADF//D/AAABAAEAAADG//D/AAABAAEAAADH//D/AAABAAEAAADI//D/AAABAAEAAADJ//D/AAABAAEAAADK//D/AAABAAEAAADK//H/AAABAAEAAADJ//H/AAABAAEAAADI//H/AAABAAEAAADH//H/AAABAAEAAADG//H/AAABAAEAAADF//H/AAABAAEAAADE//H/AAABAAEAAADE//f/AAADAAAAAAC9/woAAAAGAAMAAACh//z/AAAFAAEAAACh//v/AAAFAAEAAACk//z/AAAEAAEAAACk//v/AAAEAAEAAACf//j/AAAAAAUAAACg//j/AAACAAUAAACg//n/AAACAAYAAACh//r/AAADAAQAAACk//r/AAACAAQAAACl//n/AAAAAAYAAACl//j/AAAAAAYAAACl//f/AAAAAAYAAACl//b/AAAAAAYAAACl//X/AAAAAAYAAACl//r/AAABAAcAAACm//r/AAABAAcAAACn//r/AAABAAcAAACo//r/AAABAAcAAACl//z/AAABAAEAAACm//z/AAABAAEAAACn//z/AAABAAEAAACo//z/AAABAAEAAACo//v/AAABAAEAAACn//v/AAABAAEAAACm//v/AAABAAEAAACl//v/AAABAAEAAACo////AAADAAAAAACn////AAADAAAAAACm////AAADAAAAAACl////AAADAAAAAACk////AAADAAAAAACo/wIAAAADAAAAAACn/wIAAAADAAAAAACm/wIAAAADAAAAAACl/wIAAAADAAAAAACk/wIAAAADAAAAAACj/wIAAAADAAAAAACi/wIAAAADAAAAAACk//7/AAADAAAAAACk//3/AAADAAAAAACh//3/AAADAAAAAACh//7/AAADAAAAAACh////AAADAAAAAACh/wAAAAADAAAAAACh/wEAAAADAAAAAACh/wIAAAADAAAAAACh//T/AAABAAEAAACi//T/AAAFAAEAAACi//P/AAAFAAEAAACh//P/AAABAAEAAACi//L/AAADAAQAAACh//L/AAABAAQAAACg//P/AAACAAcAAACg//T/AAABAAEAAACg//X/AAABAAEAAACf//X/AAABAAEAAACf//T/AAABAAEAAACf//P/AAAAAAcAAACe//P/AAABAAEAAACd//P/AAABAAEAAACc//P/AAABAAEAAACY//r/AAABAAQAAACZ//r/AAABAAQAAACa//r/AAABAAQAAACb//r/AAABAAQAAACc//r/AAABAAQAAACd//r/AAABAAQAAACe//r/AAABAAQAAACf//n/AAAAAAYAAACe//H/AAABAAcAAACd//H/AAABAAcAAACc//H/AAABAAcAAACb//H/AAABAAcAAACa//H/AAAAAAcAAACe//L/AAABAAEAAACd//L/AAABAAEAAACc//L/AAABAAEAAACb//L/AAABAAEAAACa//L/AAABAAEAAACa//P/AAABAAEAAACb//P/AAABAAEAAACa/+//AAAAAAYAAACa//D/AAAAAAYAAACf//L/AAAAAAYAAACg//v/AAABAAEAAACf//v/AAABAAEAAACe//v/AAABAAEAAACd//v/AAABAAEAAACc//v/AAABAAEAAACb//v/AAABAAEAAACb//z/AAABAAEAAACc//z/AAABAAEAAACd//z/AAABAAEAAACe//z/AAABAAEAAACf//z/AAABAAEAAACg//z/AAABAAEAAACa//z/AAABAAEAAACa//v/AAABAAEAAACZ//v/AAABAAEAAACZ//z/AAABAAEAAACg//r/AAABAAcAAACf//r/AAABAAcAAACl//L/AAAAAAYAAACl//P/AAAAAAYAAACl//T/AAAAAAYAAACl//H/AAAAAAYAAACl//D/AAAAAAYAAACl/+//AAAAAAYAAACl/+7/AAAAAAYAAACg//H/AAACAAYAAACg//D/AAACAAYAAACg/+//AAACAAYAAACg/+7/AAACAAYAAACg/+3/AAACAAYAAACh/+z/AAAFAAEAAACh/+v/AAAFAAEAAACk/+z/AAAEAAEAAACk/+v/AAAEAAEAAACl/+3/AAAAAAYAAACl/+z/AAAAAAYAAACl/+v/AAAAAAYAAACg/+v/AAACAAYAAACg/+z/AAACAAYAAADU//3/AQAAAAAAAgC//wUAAAAAAAYAAAC//wQAAAAAAAYAAAC//wMAAAAAAAYAAAC//wIAAAAAAAYAAAC//wEAAAAAAAYAAAC//wAAAAAAAAYAAADC/wYAAAACAAYAAADC/wUAAAACAAYAAADC/wQAAAACAAYAAADC/wMAAAACAAYAAADD/wEAAAABAAcAAADE/wEAAAABAAcAAADF/wEAAAABAAcAAADG/wEAAAABAAcAAADH/wEAAAABAAcAAADI/wEAAAABAAcAAADJ/wEAAAABAAcAAADC/wIAAAACAAYAAADK/wIAAAAAAAYAAADD/wIAAAACAAEAAADE/wIAAAACAAEAAADF/wIAAAACAAEAAADG/wIAAAACAAEAAADH/wIAAAACAAEAAADI/wIAAAACAAEAAADJ/wIAAAACAAEAAAA=") +tile_map_data = PackedByteArray("AADL//L/AAAAAAQAAADL//P/AAAAAAQAAADL//T/AAAAAAQAAADL//X/AAAAAAQAAADL//b/AAAAAAQAAADL//f/AAAAAAQAAADL//j/AAAAAAQAAADL//n/AAAAAAQAAADL//r/AAAAAAQAAADL//v/AAAAAAQAAADL//z/AAAAAAQAAADS//T/AAAAAAcAAADM//H/AAABAAcAAADN//H/AAABAAcAAADO//H/AAABAAcAAADP//H/AAABAAcAAADT//T/AAABAAcAAADU//T/AAABAAcAAADV//T/AAABAAcAAADW//T/AAABAAcAAADX//T/AAABAAcAAADO//f/AAADAAAAAADN//f/AAADAAAAAADM//f/AAADAAAAAADS//f/AAADAAAAAADO//r/AAADAAAAAADN//r/AAADAAAAAADM//r/AAADAAAAAADS//r/AAADAAAAAADT//r/AAADAAAAAADU//r/AAADAAAAAADV//r/AAADAAAAAADW//r/AAADAAAAAADX//r/AAADAAAAAADa//f/AAAAAAYAAADa//n/AAAAAAYAAADa//r/AAAAAAYAAADa//v/AAAAAAYAAADa//z/AAAAAAYAAADa//3/AAAAAAYAAADa//7/AAAAAAYAAADL//3/AAAAAAQAAADL//7/AAAAAAQAAADa////AAAAAAYAAADa/wAAAAAAAAYAAADY//r/AAADAAAAAADZ//r/AAADAAAAAADM//3/AAAEAAUAAADN//3/AAAEAAUAAADO//3/AAAEAAUAAADP//3/AAAEAAUAAADQ//3/AAAEAAUAAADR//3/AAAEAAUAAADS//3/AAAEAAUAAADT//3/AAAFAAUAAADX//3/AAADAAUAAADY//3/AAAEAAUAAADZ//3/AAAEAAUAAADX//7/AAADAAcAAADY////AAAEAAUAAADZ////AAAEAAUAAADT//7/AAAFAAcAAADS//7/AAAEAAUAAADR//7/AAAEAAUAAADQ//7/AAAEAAUAAADP//7/AAAEAAUAAADO//7/AAAEAAUAAADN//7/AAAEAAUAAADM//7/AAAEAAUAAADX/wEAAAAFAAcAAADW/wEAAAAEAAUAAADV/wEAAAAEAAUAAADU/wEAAAAEAAUAAADT/wEAAAAEAAUAAADX/wAAAAADAAYAAAC2////AAADAAAAAAC1////AAADAAAAAAC0////AAADAAAAAACz////AAADAAAAAACy////AAADAAAAAACx////AAADAAAAAACx//7/AAADAAAAAACx//3/AAADAAAAAAC2/wIAAAADAAAAAAC1/wIAAAADAAAAAAC0/wIAAAADAAAAAACz/wIAAAADAAAAAACy/wIAAAADAAAAAACx/wIAAAADAAAAAACw/wIAAAADAAAAAACv/wIAAAADAAAAAACu/wIAAAADAAAAAACt/wIAAAADAAAAAACs/wIAAAADAAAAAACu////AAADAAAAAACu//7/AAADAAAAAACu//3/AAADAAAAAACt////AAADAAAAAACs////AAADAAAAAACr////AAADAAAAAACq////AAADAAAAAACp////AAADAAAAAACr/wIAAAADAAAAAACq/wIAAAADAAAAAACp/wIAAAADAAAAAADQ/wEAAAADAAUAAADR/wEAAAAEAAUAAADS/wEAAAAEAAUAAADQ/wIAAAADAAYAAADQ/wMAAAADAAcAAADR/wMAAAAEAAUAAADX////AAADAAUAAADY//7/AAAEAAUAAADZ//7/AAAEAAUAAADL/wkAAAAEAAQAAADM/wAAAQAAAAAAAQDM/wEAAQAAAAAAAQDM/wIAAQAAAAAAAQDM/wMAAQAAAAAAAQDR//b/AQAAAAAAAgDH//L/AQAAAAAABQDG//f/AAADAAAAAADG//r/AQAAAAAABwDR//X/AQAAAAAAAQDM//T/AAABAAEAAADN//T/AAABAAEAAADO//T/AAABAAEAAADP//T/AAABAAEAAADQ//T/AAABAAEAAADR//T/AAABAAEAAADS//X/AAAEAAEAAADS//b/AAAEAAEAAADT//X/AAABAAEAAADT//b/AAABAAEAAADV//b/AAABAAEAAADV//X/AAABAAEAAADX//b/AAABAAEAAADX//X/AAABAAEAAADZ//b/AAABAAEAAADZ//X/AAABAAEAAADa//j/AAAAAAYAAADL////AAACAAYAAADL/wAAAAACAAYAAADL/wEAAAACAAYAAADL/wIAAAACAAYAAADL/wMAAAACAAYAAADL/wQAAAACAAYAAADL/wUAAAACAAYAAADL/wYAAAACAAYAAADL/wcAAAACAAYAAADL/wgAAAACAAYAAADa/wEAAAAAAAYAAADa/wIAAAAAAAYAAADa/wMAAAAAAAYAAADa/wQAAAAAAAYAAADa/wUAAAAAAAYAAADa/wYAAAAAAAYAAADa/wcAAAAAAAYAAADa/wgAAAAAAAYAAADa/wkAAAAAAAYAAADa/woAAAAAAAYAAADa/wsAAAAAAAYAAADa/wwAAAAAAAYAAADa/w0AAAAAAAYAAADa/w4AAAAAAAYAAADZ/w8AAAABAAUAAADY/w8AAAABAAUAAADX/w8AAAABAAUAAADW/w8AAAABAAUAAADV/w8AAAABAAUAAADU/w8AAAABAAUAAADT/w8AAAABAAUAAADS/w8AAAABAAUAAADR/w8AAAABAAUAAADQ/w8AAAABAAUAAADP/w8AAAABAAUAAADO/w8AAAABAAUAAADN/w8AAAABAAUAAADM/w8AAAABAAUAAADL/w4AAAACAAYAAADL/w0AAAAFAAQAAADK/w4AAAABAAUAAADJ/w4AAAABAAUAAADI/w4AAAABAAUAAADH/w4AAAABAAUAAADG/w4AAAABAAUAAADF/w4AAAABAAUAAADE/w4AAAABAAUAAADL/wsAAAAFAAEAAADL/woAAAAFAAEAAADK/woAAAABAAEAAADI/woAAAABAAEAAADH/woAAAABAAEAAADH/wkAAAABAAEAAADI/wkAAAABAAEAAADK/wkAAAABAAEAAADB/woAAAABAAEAAADC/woAAAABAAEAAADC/wkAAAABAAEAAADB/wkAAAABAAEAAAC//woAAAABAAEAAAC//wkAAAABAAEAAADJ/wkAAAADAAEAAADG/woAAAADAAEAAADG/wkAAAADAAEAAADD/woAAAADAAEAAADD/wkAAAADAAEAAADA/woAAAADAAEAAADA/wkAAAADAAEAAADD/w4AAAABAAUAAADC/w4AAAABAAUAAADB/w4AAAABAAUAAADA/w4AAAABAAUAAAC//w4AAAABAAUAAADU//b/AAADAAEAAADU//X/AAADAAEAAADW//b/AAADAAEAAADW//X/AAADAAEAAADY//b/AAADAAEAAADY//X/AAADAAEAAADT/wkAAQAAAAAAAgDU/wkAAQAAAAAAAgDU/woAAQAAAAAAAgDT/woAAQAAAAAAAgDT/wsAAQAAAAAAAgDU/wsAAQAAAAAAAgDU/wwAAQAAAAAAAgDT/wwAAQAAAAAAAgDS/wwAAQAAAAAAAgDR/wwAAQAAAAAAAgDR/wsAAQAAAAAAAgDS/wsAAQAAAAAAAgDS/woAAQAAAAAAAgDR/woAAQAAAAAAAgDS/wkAAQAAAAAAAgDR/wkAAQAAAAAAAgDM/woAAAAGAAMAAAC+/w0AAAAFAAQAAAC+/wkAAAAEAAQAAADB/wsAAQAAAAAAAgC8/w0AAQAAAAAAAgDA/wsAAQAAAAAAAQDZ/w0AAQAAAAAAAQDZ/w4AAQAAAAAAAQDY/w4AAQAAAAAAAQDM/w4AAQAAAAAAAQC9/wgAAAACAAEAAAC8/wgAAAACAAEAAAC7/wgAAAACAAEAAAC4/wgAAAACAAEAAAC3/wgAAAACAAEAAAC2/wgAAAACAAEAAAC1/wgAAAACAAYAAAC1/wkAAAACAAYAAAC1/woAAAACAAYAAAC1/wsAAAACAAYAAAC1/wwAAAACAAYAAAC1/w0AAAACAAYAAAC2/w4AAAABAAUAAAC3/w4AAAABAAUAAAC4/w4AAAABAAUAAAC5/w4AAAABAAUAAAC6/w4AAAABAAUAAAC7/w4AAAABAAUAAAC8/w4AAAABAAUAAAC9/w4AAAABAAUAAAC1/w4AAAAAAAkAAAC+/wgAAAAAAAYAAAC+/wcAAAAAAAYAAAC7/wcAAAACAAEAAAC8/wcAAAACAAEAAAC9/wcAAAACAAEAAAC4/wcAAAACAAEAAAC3/wcAAAACAAEAAAC2/wcAAAACAAEAAAC2/wYAAAABAAcAAAC4/wYAAAADAAQAAAC7/wYAAAACAAQAAAC8/wYAAAABAAQAAAC9/wYAAAABAAQAAAC5/wMAAAADAAEAAAC6/wMAAAADAAEAAAC7/wMAAAAFAAEAAAC4/wMAAAABAAEAAAC3/wMAAAAAAAQAAAC3/wQAAAAAAAQAAAC4/wIAAAABAAEAAAC5/wIAAAADAAEAAAC6/wIAAAADAAEAAAC7/wIAAAAFAAEAAAC3/wYAAAABAAcAAAC3/wUAAAACAAYAAAC1/wcAAAACAAYAAAC5//7/AAADAAEAAAC5////AAADAAEAAAC8//7/AAADAAEAAAC8////AAADAAEAAAC9////AAABAAEAAAC+////AAABAAEAAAC/////AAAAAAYAAAC///7/AAAAAAYAAAC+//7/AAABAAEAAAC9//7/AAABAAEAAAC3////AAABAAEAAAC4////AAABAAEAAAC4//7/AAABAAEAAAC3//7/AAABAAEAAAC6//7/AAABAAEAAAC7//7/AAABAAEAAAC7////AAABAAEAAAC6////AAABAAEAAAC+/wYAAAABAAUAAAC4//3/AAABAAcAAAC5//3/AAABAAcAAAC6//3/AAABAAcAAAC7//3/AAABAAcAAAC8//3/AAABAAcAAAC9//3/AAABAAcAAAC+//3/AAABAAcAAAC3//3/AAAAAAcAAAC3/wIAAAAFAAQAAADQ/wgAAAAGAAUAAADR/wgAAAAHAAUAAADS/wgAAAAHAAUAAADT/wgAAAAHAAUAAADU/wgAAAAHAAUAAADV/wgAAAAIAAUAAADV/wkAAAAIAAYAAADV/woAAAAIAAYAAADV/wsAAAAIAAYAAADV/wwAAAAIAAYAAADV/w0AAAAIAAcAAADU/w0AAAAHAAcAAADT/w0AAAAHAAcAAADS/w0AAAAHAAcAAADR/w0AAAAHAAcAAADQ/w0AAAAGAAcAAADQ/wwAAAAGAAYAAADQ/wsAAAAGAAYAAADQ/woAAAAGAAYAAADQ/wkAAAAGAAYAAADG/wgAAAACAAQAAADD/wgAAAADAAQAAADC/wcAAAACAAYAAADD/wMAAAACAAEAAADE/wMAAAACAAEAAADF/wMAAAACAAEAAADG/wMAAAACAAEAAADH/wMAAAACAAEAAADI/wMAAAACAAEAAADJ/wMAAAACAAEAAADK/wMAAAAAAAYAAADK/wQAAAAAAAYAAADK/wUAAAAAAAYAAADK/wYAAAAAAAYAAADK/wcAAAAAAAYAAADJ/wgAAAABAAQAAADI/wgAAAABAAQAAADH/wgAAAABAAQAAADJ/woAAAADAAEAAADI/wsAAQAAAAAACQDD/wsAAQAAAAAACQDC/wsAAQAAAAAACQDY//f/AQAAAAAABgDZ//n/AQAAAAAAAQDY//n/AQAAAAAAAQDJ//f/AAADAAAAAADK//f/AAADAAAAAADF//f/AAADAAAAAADK////AAABAAUAAADJ////AAABAAUAAADI////AAABAAUAAADH////AAABAAUAAADG////AAABAAUAAADF////AAABAAUAAADE////AAABAAUAAADD//7/AAACAAYAAADD//3/AAACAAYAAADD//z/AAACAAYAAADD//v/AAACAAYAAADD//r/AAACAAYAAADD//n/AAACAAYAAADD//j/AAACAAYAAADD//f/AAACAAYAAADD//b/AAACAAYAAADD//X/AAACAAYAAADD//T/AAACAAYAAADD//P/AAACAAYAAADD//L/AAACAAYAAADD//H/AAACAAYAAADE/+//AAABAAcAAADF/+//AAABAAcAAADG/+//AAABAAcAAADH/+//AAABAAcAAADI/+//AAABAAcAAADJ/+//AAABAAcAAADK/+//AAABAAcAAADL//H/AAAAAAYAAADL//D/AAAAAAYAAADD//D/AAACAAYAAADE//D/AAABAAEAAADF//D/AAABAAEAAADG//D/AAABAAEAAADH//D/AAABAAEAAADI//D/AAABAAEAAADJ//D/AAABAAEAAADK//D/AAABAAEAAADK//H/AAABAAEAAADJ//H/AAABAAEAAADI//H/AAABAAEAAADH//H/AAABAAEAAADG//H/AAABAAEAAADF//H/AAABAAEAAADE//H/AAABAAEAAADE//f/AAADAAAAAAC9/woAAAAGAAMAAACh//z/AAAFAAEAAACh//v/AAAFAAEAAACk//z/AAAEAAEAAACk//v/AAAEAAEAAACf//j/AAAAAAUAAACg//j/AAACAAUAAACg//n/AAACAAYAAACh//r/AAADAAQAAACk//r/AAACAAQAAACl//n/AAAAAAYAAACl//j/AAAAAAYAAACl//f/AAAAAAYAAACl//b/AAAAAAYAAACl//X/AAAAAAYAAACl//r/AAABAAcAAACm//r/AAABAAcAAACn//r/AAABAAcAAACo//r/AAABAAcAAACl//z/AAABAAEAAACm//z/AAABAAEAAACn//z/AAABAAEAAACo//z/AAABAAEAAACo//v/AAABAAEAAACn//v/AAABAAEAAACm//v/AAABAAEAAACl//v/AAABAAEAAACo////AAADAAAAAACn////AAADAAAAAACm////AAADAAAAAACl////AAADAAAAAACk////AAADAAAAAACo/wIAAAADAAAAAACn/wIAAAADAAAAAACm/wIAAAADAAAAAACl/wIAAAADAAAAAACk/wIAAAADAAAAAACj/wIAAAADAAAAAACi/wIAAAADAAAAAACk//7/AAADAAAAAACk//3/AAADAAAAAACh//3/AAADAAAAAACh//7/AAADAAAAAACh////AAADAAAAAACh/wAAAAADAAAAAACh/wEAAAADAAAAAACh/wIAAAADAAAAAACh//T/AAABAAEAAACi//T/AAAFAAEAAACi//P/AAAFAAEAAACh//P/AAABAAEAAACi//L/AAADAAQAAACh//L/AAABAAQAAACg//P/AAACAAcAAACg//T/AAABAAEAAACg//X/AAABAAEAAACf//X/AAABAAEAAACf//T/AAABAAEAAACf//P/AAAAAAcAAACe//P/AAABAAEAAACd//P/AAABAAEAAACc//P/AAABAAEAAACY//r/AAABAAQAAACZ//r/AAABAAQAAACa//r/AAABAAQAAACb//r/AAABAAQAAACc//r/AAABAAQAAACd//r/AAABAAQAAACe//r/AAABAAQAAACf//n/AAAAAAYAAACe//H/AAABAAcAAACd//H/AAABAAcAAACc//H/AAABAAcAAACb//H/AAABAAcAAACa//H/AAAAAAcAAACe//L/AAABAAEAAACd//L/AAABAAEAAACc//L/AAABAAEAAACb//L/AAABAAEAAACa//L/AAABAAEAAACa//P/AAABAAEAAACb//P/AAABAAEAAACa/+//AAAAAAYAAACa//D/AAAAAAYAAACf//L/AAAAAAYAAACg//v/AAABAAEAAACf//v/AAABAAEAAACe//v/AAABAAEAAACd//v/AAABAAEAAACc//v/AAABAAEAAACb//v/AAABAAEAAACb//z/AAABAAEAAACc//z/AAABAAEAAACd//z/AAABAAEAAACe//z/AAABAAEAAACf//z/AAABAAEAAACg//z/AAABAAEAAACa//z/AAABAAEAAACa//v/AAABAAEAAACZ//v/AAABAAEAAACZ//z/AAABAAEAAACg//r/AAABAAcAAACf//r/AAABAAcAAACl//L/AAAAAAYAAACl//P/AAAAAAYAAACl//T/AAAAAAYAAACl//H/AAAAAAYAAACl//D/AAAAAAYAAACl/+//AAAAAAYAAACl/+7/AAAAAAYAAACg//H/AAACAAYAAACg//D/AAACAAYAAACg/+//AAACAAYAAACg/+7/AAACAAYAAACg/+3/AAACAAYAAACh/+z/AAAFAAEAAACh/+v/AAAFAAEAAACk/+z/AAAEAAEAAACk/+v/AAAEAAEAAACl/+3/AAAAAAYAAACl/+z/AAAAAAYAAACl/+v/AAAAAAYAAACg/+v/AAACAAYAAACg/+z/AAACAAYAAADU//3/AQAAAAAAAgC//wUAAAAAAAYAAAC//wQAAAAAAAYAAAC//wMAAAAAAAYAAAC//wIAAAAAAAYAAAC//wEAAAAAAAYAAAC//wAAAAAAAAYAAADC/wYAAAACAAYAAADC/wUAAAACAAYAAADC/wQAAAACAAYAAADC/wMAAAACAAYAAADD/wEAAAABAAcAAADE/wEAAAABAAcAAADF/wEAAAABAAcAAADG/wEAAAABAAcAAADH/wEAAAABAAcAAADI/wEAAAABAAcAAADJ/wEAAAABAAcAAADC/wIAAAACAAYAAADK/wIAAAAAAAYAAADD/wIAAAACAAEAAADE/wIAAAACAAEAAADF/wIAAAACAAEAAADG/wIAAAACAAEAAADH/wIAAAACAAEAAADI/wIAAAACAAEAAADJ/wIAAAACAAEAAADa//b/AAAAAAYAAADa//X/AAAAAAYAAADZ//T/AAABAAcAAAA=") tile_set = ExtResource("3_kgs2x") [node name="Props" type="TileMapLayer" parent="Factory Tilemaps"] @@ -193,3 +193,6 @@ position = Vector2(-824, -152) [node name="AlarmManager" type="Node2D" parent="."] script = ExtResource("25_rpwvt") + +[node name="Camera" parent="." instance=ExtResource("16_clqjt")] +position = Vector2(-767, -278) diff --git a/Scripts/Components/CameraPlayerDetection.cs b/Scripts/Components/CameraPlayerDetection.cs new file mode 100644 index 00000000..28f23662 --- /dev/null +++ b/Scripts/Components/CameraPlayerDetection.cs @@ -0,0 +1,129 @@ +using System.Diagnostics; +using Godot; +using Godot.Collections; + +namespace Cirno.Scripts.Components; + +public partial class CameraPlayerDetection : PlayerDetection +{ + + [Export] public float SweepAngle = 90f; // In degrees + [Export] public float SweepSpeed = 1f; // Speed of sweeping + [Export] public bool Debug = false; // Enable debug lines + + private float _currentAngle; + private float _sweepDirection = 1f; + private float _raycastLength; + + public override void _Ready() + { + base._Ready(); + + var collisionShape = GetNode("CollisionShape2D"); + if (collisionShape.Shape is CircleShape2D circle) + { + _raycastLength = circle.Radius; + } + } + + public override void _PhysicsProcess(double delta) + { + base._PhysicsProcess(delta); + SweepCamera((float)delta); + } + + private void SweepCamera(float delta) + { + _currentAngle += _sweepDirection * SweepSpeed * delta; + + // Clamp angle within the sweep range + float halfAngle = SweepAngle / 2f; + if (_currentAngle > halfAngle || _currentAngle < -halfAngle) + { + _sweepDirection *= -1f; + _currentAngle = Mathf.Clamp(_currentAngle, -halfAngle, halfAngle); + } + + // if (result.Count > 0 && result["collider"] is InteractionController interactionController && interactionController == _cachedPlayer) + // { + // GD.Print("Player detected!"); + // // Handle detection logic here + // } + } + + private void DrawDebugLine(Vector2 endPoint) + { + // Request the node to redraw + QueueRedraw(); + _debugLineEndPoint = endPoint; + } + + private Vector2 _debugLineEndPoint; + + public override void _Draw() + { + if (Debug) + { + DrawLine(Vector2.Zero, ToLocal(_debugLineEndPoint), Colors.Red, 2); + } + } + + public override bool IsPlayerInSight(uint collisionMask) + { + if (_cachedPlayer == null) return false; + + Vector2 direction = new Vector2(0, 1).Rotated(Mathf.DegToRad(_currentAngle)); + Vector2 rayEnd = GlobalPosition + direction * _raycastLength; + + // Perform raycast + var spaceState = GetWorld2D().DirectSpaceState; + var query = PhysicsRayQueryParameters2D.Create(GlobalPosition, rayEnd); + query.Exclude = new Godot.Collections.Array { GetRid() }; + query.CollideWithAreas = true; + query.CollideWithBodies = true; + query.CollisionMask = collisionMask; + + var result = spaceState.IntersectRay(query); + + bool detected = false; + + Vector2 debugLineEnd = rayEnd; + if (result.Count > 0) + { + Node colliderNode = result["collider"].As(); + if (colliderNode is InteractionController interactionController && interactionController == _cachedPlayer) + { + GD.Print("Player detected!"); + detected = true; + // Handle detection logic here + } + // Adjust debug line to collision point + debugLineEnd = (Vector2)result["position"]; + } + + if (Debug) + { + DrawDebugLine(debugLineEnd); + } + + return detected; + } + + private void _on_area_entered(Area2D area) + { + // Assume area is player for now + if (area is not InteractionController player) return; + + GD.Print("Enemy detection area Entered by interaction controller"); + + _cachedPlayer = player; + + IsPlayerInRange = true; + } + + private void _on_area_exited(Area2D area) + { + if (area is not InteractionController player) return; + IsPlayerInRange = false; + } +} \ No newline at end of file