From dbca78c0b7e7e8eb8a0323e3cb0a164468a2b4ca Mon Sep 17 00:00:00 2001 From: Marco Date: Tue, 27 May 2025 15:11:02 +0200 Subject: [PATCH] Prisms and hit buttons --- Scenes/Actors/prism.tscn | 17 ++++++++++ Scenes/Interactable/Hit_Button.tscn | 45 ++++++++++++++++++++++++++ Scenes/Maps/Level2.tscn | 35 +++++++++++++++++--- Scenes/test.tscn | 4 +-- Scripts/Actors/Prism.cs | 23 +++++++++++++ Scripts/Actors/Prism.cs.uid | 1 + Scripts/Interactables/HitButton.cs | 21 ++++++++++++ Scripts/Interactables/HitButton.cs.uid | 1 + 8 files changed, 141 insertions(+), 6 deletions(-) create mode 100644 Scenes/Actors/prism.tscn create mode 100644 Scenes/Interactable/Hit_Button.tscn create mode 100644 Scripts/Actors/Prism.cs create mode 100644 Scripts/Actors/Prism.cs.uid create mode 100644 Scripts/Interactables/HitButton.cs create mode 100644 Scripts/Interactables/HitButton.cs.uid diff --git a/Scenes/Actors/prism.tscn b/Scenes/Actors/prism.tscn new file mode 100644 index 00000000..d134d30d --- /dev/null +++ b/Scenes/Actors/prism.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=4 format=3 uid="uid://pvpt2af54s1a"] + +[ext_resource type="Script" uid="uid://yf367y2o5oyh" path="res://Scripts/Actors/Prism.cs" id="1_gnsdu"] +[ext_resource type="Texture2D" uid="uid://tm14o2xkomjb" path="res://Sprites/Icon.png" id="2_3vm23"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_3vm23"] + +[node name="Prism" type="Area2D"] +collision_layer = 16 +collision_mask = 136 +script = ExtResource("1_gnsdu") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("CircleShape2D_3vm23") + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource("2_3vm23") diff --git a/Scenes/Interactable/Hit_Button.tscn b/Scenes/Interactable/Hit_Button.tscn new file mode 100644 index 00000000..b156cccd --- /dev/null +++ b/Scenes/Interactable/Hit_Button.tscn @@ -0,0 +1,45 @@ +[gd_scene load_steps=8 format=3 uid="uid://d11toudt5y03k"] + +[ext_resource type="Script" uid="uid://cfi441fv227kj" path="res://Scripts/Interactables/HitButton.cs" id="1_nd3ct"] +[ext_resource type="Texture2D" uid="uid://d24g1qb40t72l" path="res://Sprites/Button_Small.png" id="2_1w5nf"] +[ext_resource type="AudioStream" uid="uid://bjvklk7qmlivd" path="res://SFX/288963__littlerobotsoundfactory__click_electronic_14.wav" id="3_7xhc3"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_vvpve"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_rie4n"] +atlas = ExtResource("2_1w5nf") +region = Rect2(0, 0, 8, 8) + +[sub_resource type="AtlasTexture" id="AtlasTexture_sgwyd"] +atlas = ExtResource("2_1w5nf") +region = Rect2(8, 0, 8, 8) + +[sub_resource type="SpriteFrames" id="SpriteFrames_b2dxw"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_rie4n") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_sgwyd") +}], +"loop": true, +"name": &"default", +"speed": 5.0 +}] + +[node name="HitButton" type="Area2D" groups=["Interactable"]] +collision_layer = 4 +collision_mask = 138 +script = ExtResource("1_nd3ct") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("CircleShape2D_vvpve") + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] +sprite_frames = SubResource("SpriteFrames_b2dxw") +autoplay = "default" +frame_progress = 0.061742 + +[node name="ActivationSound" type="AudioStreamPlayer2D" parent="."] +stream = ExtResource("3_7xhc3") diff --git a/Scenes/Maps/Level2.tscn b/Scenes/Maps/Level2.tscn index 8fa74811..33f0356d 100644 --- a/Scenes/Maps/Level2.tscn +++ b/Scenes/Maps/Level2.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=96 format=4 uid="uid://6a6tjohypmmb"] +[gd_scene load_steps=98 format=4 uid="uid://6a6tjohypmmb"] [ext_resource type="Script" uid="uid://doxmbokehw8ci" path="res://Scripts/GameManager.cs" id="1_t2k72"] [ext_resource type="PackedScene" uid="uid://c4pr2707hbeph" path="res://Scenes/Actors/fsm_player.tscn" id="2_2jsgm"] @@ -51,7 +51,9 @@ [ext_resource type="LabelSettings" uid="uid://buk3e7bbwmnv1" path="res://Resources/Styles/Hud_Text_Style.tres" id="44_q1ysg"] [ext_resource type="PackedScene" uid="uid://doqmmuuuprl3s" path="res://Scenes/Interactable/Computer.tscn" id="45_f2fbs"] [ext_resource type="Script" uid="uid://d0a0o50j82eo6" path="res://Scripts/Activables/ScriptableBase.cs" id="46_dotto"] +[ext_resource type="PackedScene" uid="uid://pvpt2af54s1a" path="res://Scenes/Actors/prism.tscn" id="47_dotto"] [ext_resource type="PackedScene" uid="uid://bmif3jo03yuol" path="res://Scenes/camera_controller.tscn" id="47_nq7r5"] +[ext_resource type="PackedScene" uid="uid://d11toudt5y03k" path="res://Scenes/Interactable/Hit_Button.tscn" id="48_wv8f4"] [sub_resource type="LabelSettings" id="LabelSettings_5j8ks"] font = ExtResource("9_qo7ri") @@ -364,7 +366,7 @@ metadata/_edit_lock_ = true [node name="Props" type="TileMapLayer" parent="Tilemaps" groups=["Solid"]] y_sort_enabled = true -tile_map_data = PackedByteArray("AAARABEAAQAAAAAAFAASABEAAQAAAAAAAgAVABQAAQAAAAAAAgAVABEAAQAAAAAAFQAVABIAAQAAAAAADAAUABEAAQAAAAAADQAKABAAAAAGAAAAAAALABAAAAAHAAAAAAAHABAAAAAGAAAAAAAIABAAAAAHAAAAAAAFABAAAQAAAAAAFAAGABAAAQAAAAAAFAADABUAAQAAAAAAAQADABYAAQAAAAAAGQAEABcAAQAAAAAADgADABcAAQAAAAAAAQATABEAAQAAAAAADwAVABMAAQAAAAAADwADABgAAQAAAAAADgAEABgAAQAAAAAADgALABgAAQAAAAAACQAKABgAAQAAAAAADwALABcAAQAAAAAAAQAJABgAAQAAAAAAEAAIABgAAQAAAAAAEAADABMAAQAAAAAAEwADABQAAQAAAAAAEAAKAB4AAQAAAAAAEAALAB4AAQAAAAAAEAACAB4AAQAAAAAAEAADAB4AAQAAAAAAAQALAB8AAQAAAAAAAQAJACMAAQAAAAAAAgAKACMAAQAAAAAAAgALACMAAQAAAAAACQAIACMAAQAAAAAADAAEACMAAQAAAAAAFQAHACMAAQAAAAAAEAADACMAAQAAAAAADQAFACMAAQAAAAAADgAGACMAAQAAAAAAEAAJABAAAQAAAAAAEQACACAAAAAGAAMAAAANAB8AAQAAAAAACQAUACEAAQAAAAAAEAANACEAAQAAAAAAEAAGABMAAAAIAAYAAAAGABQAAAAIAAYAAAAHABUAAAAHAAUAAAAIABUAAAAHAAUAAAAJABMAAAAGAAYAAAAJABQAAAAGAAYAAAAHABIAAAAHAAcAAAAIABIAAAAHAAcAAAAHABMAAQAAAAAAAQAHABQAAQAAAAAAAQAIABMAAQAAAAAAAQAIABQAAQAAAAAAAQAVACAAAAAIAAYAAAAXAB8AAAAIAAYAAAAXACAAAAAIAAYAAAAXACEAAAAIAAYAAAAXACIAAAAIAAYAAAAYACMAAAAHAAUAAAAZACMAAAAHAAUAAAAaACMAAAAHAAUAAAAbACMAAAAHAAUAAAAcACMAAAAHAAUAAAAdACMAAAAHAAUAAAAeAB8AAAAGAAYAAAAeACAAAAAGAAYAAAAeACEAAAAGAAYAAAAeACIAAAAGAAYAAAAYAB4AAAAHAAcAAAAZAB4AAAAHAAcA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AAD1/ywACgAAAAEAAAD2/yEACgABAAIAAAD2/yIACgABAAMAAAD3/yEACgABAAIAAAD3/yIACgABAAMAAADb/xQAAQAAAAAAEQDb/xMAAQAAAAAAEQDb/xIAAQAAAAAAEQDV/xQAAQAAAAAAEQDV/xMAAQAAAAAAEQDV/xIAAQAAAAAAEQDV/xcAAQAAAAAAEQDV/xYAAQAAAAAAEQDb/xcAAQAAAAAAEQDb/xYAAQAAAAAAEQDq/zcAAQAAAAAAEwDr/zcAAQAAAAAAEwDs/zcAAQAAAAAAFgDq/zgAAQAAAAAAEwDr/zgAAQAAAAAAFQDq/zkAAQAAAAAAEwDs/zgAAQAAAAAAEADr/zkAAQAAAAAAEAADABAAAQAAAAAAFQDx/yEAAQAAAAAAFQDy/yEAAQAAAAAAFQDf/w8AAQAAAAAAFQDg/w8AAQAAAAAAFQDh/w8AAQAAAAAAEwDh/xAAAQAAAAAAEADg/xAAAQAAAAAAEADy/yIAAQAAAAAADADw/yEAAQAAAAAADAD3/woAAQAAAAAAFgDn/xEAAQAAAAAAFgDm/xEAAQAAAAAAFgDi/zwAAAAKAA4AAADi/z0AAAAKAA8AAADi/0AAAAAKAA4AAADi/0EAAAAKAA8AAADf/zwAAAAKAA4AAADf/z0AAAAKAA8AAADf/0AAAAAKAA4AAADf/0EAAAAKAA8AAADc/zwAAAAKAA4AAADc/z0AAAAKAA8AAADc/0AAAAAKAA4AAADc/0EAAAAKAA8AAADZ/0AAAAAKAA4AAADZ/0EAAAAKAA8AAADZ/zwAAAAKAA4AAADZ/z0AAAAKAA4AAAA=") +tile_map_data = PackedByteArray("AAARABEAAQAAAAAAFAASABEAAQAAAAAAAgAVABQAAQAAAAAAAgAVABEAAQAAAAAAFQAVABIAAQAAAAAADAAUABEAAQAAAAAADQAKABAAAAAGAAAAAAALABAAAAAHAAAAAAAHABAAAAAGAAAAAAAIABAAAAAHAAAAAAAFABAAAQAAAAAAFAAGABAAAQAAAAAAFAADABUAAQAAAAAAAQADABYAAQAAAAAAGQAEABcAAQAAAAAADgADABcAAQAAAAAAAQATABEAAQAAAAAADwAVABMAAQAAAAAADwADABgAAQAAAAAADgAEABgAAQAAAAAADgALABgAAQAAAAAACQAKABgAAQAAAAAADwALABcAAQAAAAAAAQAJABgAAQAAAAAAEAAIABgAAQAAAAAAEAADABMAAQAAAAAAEwADABQAAQAAAAAAEAAKAB4AAQAAAAAAEAALAB4AAQAAAAAAEAACAB4AAQAAAAAAEAADAB4AAQAAAAAAAQALAB8AAQAAAAAAAQAJACMAAQAAAAAAAgAKACMAAQAAAAAAAgALACMAAQAAAAAACQAIACMAAQAAAAAADAAEACMAAQAAAAAAFQAHACMAAQAAAAAAEAADACMAAQAAAAAADQAFACMAAQAAAAAADgAGACMAAQAAAAAAEAAJABAAAQAAAAAAEQACACAAAAAGAAMAAAANAB8AAQAAAAAACQAUACEAAQAAAAAAEAANACEAAQAAAAAAEAAGABMAAAAIAAYAAAAGABQAAAAIAAYAAAAHABUAAAAHAAUAAAAIABUAAAAHAAUAAAAJABMAAAAGAAYAAAAJABQAAAAGAAYAAAAHABIAAAAHAAcAAAAIABIAAAAHAAcAAAAHABMAAQAAAAAAAQAHABQAAQAAAAAAAQAIABMAAQAAAAAAAQAIABQAAQAAAAAAAQAVACAAAAAIAAYAAAAXAB8AAAAIAAYAAAAXACAAAAAIAAYAAAAXACEAAAAIAAYAAAAXACIAAAAIAAYAAAAYACMAAAAHAAUAAAAZACMAAAAHAAUAAAAaACMAAAAHAAUAAAAbACMAAAAHAAUAAAAcACMAAAAHAAUAAAAdACMAAAAHAAUAAAAeAB8AAAAGAAYAAAAeACAAAAAGAAYAAAAeACEAAAAGAAYAAAAeACIAAAAGAAYAAAAYAB4AAAAHAAcAAAAZAB4AAAAHAAcA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AAD1/ywACgAAAAEAAAD2/yEACgABAAIAAAD2/yIACgABAAMAAAD3/yEACgABAAIAAAD3/yIACgABAAMAAADb/xQAAQAAAAAAEQDb/xMAAQAAAAAAEQDb/xIAAQAAAAAAEQDV/xQAAQAAAAAAEQDV/xMAAQAAAAAAEQDV/xIAAQAAAAAAEQDV/xcAAQAAAAAAEQDV/xYAAQAAAAAAEQDb/xcAAQAAAAAAEQDb/xYAAQAAAAAAEQDq/zcAAQAAAAAAEwDr/zcAAQAAAAAAEwDs/zcAAQAAAAAAFgDq/zgAAQAAAAAAEwDr/zgAAQAAAAAAFQDq/zkAAQAAAAAAEwDs/zgAAQAAAAAAEADr/zkAAQAAAAAAEAADABAAAQAAAAAAFQDx/yEAAQAAAAAAFQDy/yEAAQAAAAAAFQDf/w8AAQAAAAAAFQDg/w8AAQAAAAAAFQDh/w8AAQAAAAAAEwDh/xAAAQAAAAAAEADg/xAAAQAAAAAAEADy/yIAAQAAAAAADADw/yEAAQAAAAAADAD3/woAAQAAAAAAFgDn/xEAAQAAAAAAFgDm/xEAAQAAAAAAFgDi/zwAAAAKAA4AAADi/z0AAAAKAA8AAADi/0AAAAAKAA4AAADi/0EAAAAKAA8AAADf/zwAAAAKAA4AAADf/z0AAAAKAA8AAADf/0AAAAAKAA4AAADf/0EAAAAKAA8AAADc/zwAAAAKAA4AAADc/z0AAAAKAA8AAADc/0AAAAAKAA4AAADc/0EAAAAKAA8AAADZ/0AAAAAKAA4AAADZ/0EAAAAKAA8AAADZ/zwAAAAKAA4AAADZ/z0AAAAKAA4AAADj/z0AAAAEAAkAAADj/0EAAAAEAAkAAAA=") tile_set = ExtResource("5_06rc0") metadata/_edit_lock_ = true @@ -375,7 +377,7 @@ metadata/_edit_lock_ = true position = Vector2(311, 304) [node name="DebugTeleporter" parent="Tilemaps/Actors" node_paths=PackedStringArray("Target") instance=ExtResource("6_e12id")] -position = Vector2(1313, 306) +position = Vector2(328, 329) IsEnabled = true Target = NodePath("../DebugTeleporterDestination") metadata/_edit_group_ = true @@ -389,7 +391,7 @@ text = "Debug" label_settings = SubResource("LabelSettings_5j8ks") [node name="DebugTeleporterDestination" parent="Tilemaps/Actors" instance=ExtResource("6_e12id")] -position = Vector2(-72.1223, 735.098) +position = Vector2(-457, 936) Invisible = true [node name="Vials" type="Sprite2D" parent="Tilemaps/Actors"] @@ -667,6 +669,31 @@ Events = Array[ExtResource("13_5t0ab")]([SubResource("Resource_wv8f4")]) [node name="VerticalDoor4" parent="Tilemaps/Actors" instance=ExtResource("20_qudbj")] position = Vector2(-444, 984) +[node name="HorizontalForceField2" parent="Tilemaps/Actors" instance=ExtResource("31_hvfip")] +position = Vector2(-592, 976) + +[node name="HorizontalForceField3" parent="Tilemaps/Actors" instance=ExtResource("31_hvfip")] +position = Vector2(-544, 976) + +[node name="HorizontalForceField4" parent="Tilemaps/Actors" instance=ExtResource("31_hvfip")] +position = Vector2(-496, 976) + +[node name="HorizontalForceField5" parent="Tilemaps/Actors" instance=ExtResource("31_hvfip")] +position = Vector2(-593, 1040) + +[node name="HorizontalForceField6" parent="Tilemaps/Actors" instance=ExtResource("31_hvfip")] +position = Vector2(-544, 1040) + +[node name="HorizontalForceField7" parent="Tilemaps/Actors" instance=ExtResource("31_hvfip")] +position = Vector2(-497, 1040) + +[node name="Prism" parent="Tilemaps/Actors" instance=ExtResource("47_dotto")] +position = Vector2(-457, 1077) + +[node name="HitButton" parent="Tilemaps/Actors" node_paths=PackedStringArray("Target") instance=ExtResource("48_wv8f4")] +position = Vector2(-558, 1077) +Target = NodePath("../HorizontalForceField6") + [node name="ReferenceRect" type="ReferenceRect" parent="."] visible = false offset_left = -38.0 diff --git a/Scenes/test.tscn b/Scenes/test.tscn index 9586eb4d..bfa907f8 100644 --- a/Scenes/test.tscn +++ b/Scenes/test.tscn @@ -301,7 +301,7 @@ ActivationType = 0 Targets = Array[NodePath]([NodePath("../Rumia")]) WaitForCompletion = true -[sub_resource type="Resource" id="Resource_jm0wb"] +[sub_resource type="Resource" id="Resource_w8skm"] resource_local_to_scene = true script = ExtResource("49_0si7g") Target = NodePath(".") @@ -1260,7 +1260,7 @@ Events = Array[ExtResource("62_w8skm")]([SubResource("Resource_068l7"), SubResou [node name="BossBattleStartScript" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("43_kf3qc")] position = Vector2(-1487, -396) -Events = Array[ExtResource("62_w8skm")]([SubResource("Resource_4f4id"), SubResource("Resource_s2o7m"), SubResource("Resource_b1dht"), SubResource("Resource_xrgpy"), SubResource("Resource_jm0wb")]) +Events = Array[ExtResource("62_w8skm")]([SubResource("Resource_4f4id"), SubResource("Resource_s2o7m"), SubResource("Resource_b1dht"), SubResource("Resource_xrgpy"), SubResource("Resource_w8skm")]) [node name="Enemy13" parent="Parallax2D/Factory Tilemaps/LevelProps" instance=ExtResource("47_u1ve6")] position = Vector2(-1657, -788) diff --git a/Scripts/Actors/Prism.cs b/Scripts/Actors/Prism.cs new file mode 100644 index 00000000..5620e98a --- /dev/null +++ b/Scripts/Actors/Prism.cs @@ -0,0 +1,23 @@ +using Godot; + +namespace Cirno.Scripts.Actors; + +public partial class Prism : Area2D +{ + [Export] public float ReflectionAngle { get; set; } = 90f; + [Export] public float RotationAngle { get; set; } + + public override void _Ready() + { + this.AreaEntered += OnCollision; + } + + private void OnCollision(Area2D other) + { + if (other is not Bullet bullet) return; + + bullet.RotateBullet(ReflectionAngle); + + } + +} \ No newline at end of file diff --git a/Scripts/Actors/Prism.cs.uid b/Scripts/Actors/Prism.cs.uid new file mode 100644 index 00000000..51375fa8 --- /dev/null +++ b/Scripts/Actors/Prism.cs.uid @@ -0,0 +1 @@ +uid://yf367y2o5oyh diff --git a/Scripts/Interactables/HitButton.cs b/Scripts/Interactables/HitButton.cs new file mode 100644 index 00000000..45be721f --- /dev/null +++ b/Scripts/Interactables/HitButton.cs @@ -0,0 +1,21 @@ +using Godot; + +namespace Cirno.Scripts.Interactables; + +public partial class HitButton : Switch +{ + public override void _Ready() + { + base._Ready(); + this.AreaEntered += OnAreaEntered; + } + + private void OnAreaEntered(Area2D area) + { + if (area is not Bullet bullet) return; + + this.Activate(this.ActivationType); + + bullet.RequestCollisionDestruction(); + } +} \ No newline at end of file diff --git a/Scripts/Interactables/HitButton.cs.uid b/Scripts/Interactables/HitButton.cs.uid new file mode 100644 index 00000000..2f79a238 --- /dev/null +++ b/Scripts/Interactables/HitButton.cs.uid @@ -0,0 +1 @@ +uid://cfi441fv227kj