From 1a918a7a14dc21a976ced881a39556b377d748bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=A8=E8=90=BD=E5=9F=BA=E5=9B=B4=E8=99=BE?= <3161880837@qq.com> Date: Wed, 27 Aug 2025 15:38:30 +0800 Subject: [PATCH] Refactor and update various components and assets - Updated WaterBottle scene to change field values and costs, and modified avatar texture and display name. - Removed unused pencil SVG and its import files. - Updated Chomp sound effect with a new binary file. - Modified Diamond bullet behavior to improve tracing logic. - Increased rotation speed for Laser bullet. - Adjusted Chick and Hen character attack methods to generate bullets without returning prematurely. - Updated Rooster character to use PurpleCrystal bullet instead of Pencil. - Enhanced BulletBase with new properties for energy consumption and animation control. - Adjusted blend position interpolation in EntityBase for smoother movement. - Added new Star bullet with its scene and script, including animation setup. - Updated SVG and import files for new Star bullet graphics. --- components/Abstracts/BulletBase.tscn | 20 +++- components/Bullets/HenBomb.tscn | 17 --- components/Bullets/Laser.tscn | 2 +- components/Bullets/Pencil.tscn | 97 +++++++++--------- components/Bullets/Star.tscn | 83 +++++++++++++++ components/Characters/Chick.tscn | 2 +- components/Characters/Hen.tscn | 2 +- components/Feeds/WaterBottle.tscn | 13 ++- resources/bullets/pencil/Chomp.wav.import | 24 +++++ .../bullets/pencil/{ => frames}/pencil-a.svg | 0 .../pencil/{ => frames}/pencil-a.svg.import | 6 +- resources/bullets/star/frames/star.svg | 7 ++ resources/bullets/star/frames/star.svg.import | 37 +++++++ resources/sounds/effect/Chomp.wav | Bin 25398 -> 25398 bytes scripts/Contents/Bullets/Diamond.gd | 8 +- scripts/Contents/Bullets/Laser.gd | 2 +- scripts/Contents/Bullets/Star.gd | 5 + scripts/Contents/Characters/Chick.gd | 7 +- scripts/Contents/Characters/Hen.gd | 4 +- scripts/Contents/Characters/Rooster.gd | 4 +- scripts/Statemachine/BulletBase.gd | 10 +- scripts/Statemachine/EntityBase.gd | 2 +- 22 files changed, 259 insertions(+), 93 deletions(-) delete mode 100644 components/Bullets/HenBomb.tscn create mode 100644 components/Bullets/Star.tscn create mode 100644 resources/bullets/pencil/Chomp.wav.import rename resources/bullets/pencil/{ => frames}/pencil-a.svg (100%) rename resources/bullets/pencil/{ => frames}/pencil-a.svg.import (73%) create mode 100644 resources/bullets/star/frames/star.svg create mode 100644 resources/bullets/star/frames/star.svg.import create mode 100644 scripts/Contents/Bullets/Star.gd diff --git a/components/Abstracts/BulletBase.tscn b/components/Abstracts/BulletBase.tscn index fa09ef9..0c460b1 100644 --- a/components/Abstracts/BulletBase.tscn +++ b/components/Abstracts/BulletBase.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=6 format=3 uid="uid://crtdkysmnkith"] +[gd_scene load_steps=7 format=3 uid="uid://crtdkysmnkith"] [ext_resource type="Script" path="res://scripts/Statemachine/BulletBase.gd" id="1_pklpq"] @@ -7,8 +7,26 @@ [sub_resource type="Animation" id="Animation_kmogx"] resource_name = "spawn" +[sub_resource type="Animation" id="Animation_ynxlt"] +resource_name = "loop" +loop_mode = 1 +step = 0.1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 1), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 6.28319] +} + [sub_resource type="AnimationLibrary" id="AnimationLibrary_dxweq"] _data = { +"loop": SubResource("Animation_ynxlt"), "spawn": SubResource("Animation_kmogx") } diff --git a/components/Bullets/HenBomb.tscn b/components/Bullets/HenBomb.tscn deleted file mode 100644 index c577e38..0000000 --- a/components/Bullets/HenBomb.tscn +++ /dev/null @@ -1,17 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://dm6viyjsje6yj"] - -[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_2l75q"] - -[sub_resource type="CircleShape2D" id="CircleShape2D_q8kgb"] -radius = 60.0 - -[node name="HenBomb" instance=ExtResource("1_2l75q")] -fields = { -0: 10, -1: 5, -2: 0 -} -lifeTime = 100.0 - -[node name="hitbox" parent="." index="1"] -shape = SubResource("CircleShape2D_q8kgb") diff --git a/components/Bullets/Laser.tscn b/components/Bullets/Laser.tscn index 2e1f801..9498625 100644 --- a/components/Bullets/Laser.tscn +++ b/components/Bullets/Laser.tscn @@ -22,7 +22,7 @@ fields = { 1: 15, 2: 1 } -lifeTime = 1000.0 +lifeTime = 2000.0 [node name="texture" parent="." index="0"] rotation = 1.5708 diff --git a/components/Bullets/Pencil.tscn b/components/Bullets/Pencil.tscn index 3658bf9..4a4d614 100644 --- a/components/Bullets/Pencil.tscn +++ b/components/Bullets/Pencil.tscn @@ -2,7 +2,7 @@ [ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_anksp"] [ext_resource type="Script" path="res://scripts/Contents/Bullets/Pencil.gd" id="2_4w6n2"] -[ext_resource type="Texture2D" uid="uid://dnpqfqfg6dwt4" path="res://resources/bullets/pencil/pencil-a.svg" id="2_ks8tb"] +[ext_resource type="Texture2D" uid="uid://dnpqfqfg6dwt4" path="res://resources/bullets/pencil/frames/pencil-a.svg" id="2_ks8tb"] [sub_resource type="SpriteFrames" id="SpriteFrames_7ol02"] animations = [{ @@ -15,6 +15,53 @@ animations = [{ "speed": 5.0 }] +[sub_resource type="Animation" id="Animation_ij0gd"] +length = 0.001 +tracks/0/type = "bezier" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:scale:x") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"handle_modes": PackedInt32Array(0), +"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0) +} +tracks/1/type = "bezier" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:scale:y") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"handle_modes": PackedInt32Array(0), +"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0) +} +tracks/2/type = "bezier" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath(".:modulate:a") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"handle_modes": PackedInt32Array(0), +"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0) +} +tracks/3/type = "bezier" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath(".:position:y") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"handle_modes": PackedInt32Array(0), +"points": PackedFloat32Array(-44, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0) +} + [sub_resource type="Animation" id="Animation_kmogx"] resource_name = "spawn" step = 0.05 @@ -63,53 +110,6 @@ tracks/3/keys = { "times": PackedFloat32Array(0.75, 1) } -[sub_resource type="Animation" id="Animation_ij0gd"] -length = 0.001 -tracks/0/type = "bezier" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath(".:scale:x") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"handle_modes": PackedInt32Array(0), -"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0), -"times": PackedFloat32Array(0) -} -tracks/1/type = "bezier" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath(".:scale:y") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"handle_modes": PackedInt32Array(0), -"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0), -"times": PackedFloat32Array(0) -} -tracks/2/type = "bezier" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath(".:modulate:a") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"handle_modes": PackedInt32Array(0), -"points": PackedFloat32Array(1, -0.25, 0, 0.25, 0), -"times": PackedFloat32Array(0) -} -tracks/3/type = "bezier" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath(".:position:y") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"handle_modes": PackedInt32Array(0), -"points": PackedFloat32Array(-44, -0.25, 0, 0.25, 0), -"times": PackedFloat32Array(0) -} - [sub_resource type="AnimationLibrary" id="AnimationLibrary_0cgv5"] _data = { "RESET": SubResource("Animation_ij0gd"), @@ -122,6 +122,7 @@ size = Vector2(10, 10) [node name="Pencil" instance=ExtResource("1_anksp")] script = ExtResource("2_4w6n2") lifeTime = 3000.0 +autoSpawnAnimation = true [node name="texture" parent="." index="0"] position = Vector2(0, -44) diff --git a/components/Bullets/Star.tscn b/components/Bullets/Star.tscn new file mode 100644 index 0000000..4a40fcd --- /dev/null +++ b/components/Bullets/Star.tscn @@ -0,0 +1,83 @@ +[gd_scene load_steps=10 format=3 uid="uid://dm6viyjsje6yj"] + +[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_x6yf7"] +[ext_resource type="Texture2D" uid="uid://csdjmin6g22sw" path="res://resources/bullets/star/frames/star.svg" id="2_cke7d"] +[ext_resource type="Script" path="res://scripts/Contents/Bullets/Star.gd" id="2_y4b0l"] + +[sub_resource type="SpriteFrames" id="SpriteFrames_t53gb"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": ExtResource("2_cke7d") +}], +"loop": true, +"name": &"default", +"speed": 5.0 +}] + +[sub_resource type="Animation" id="Animation_kmogx"] +resource_name = "spawn" + +[sub_resource type="Animation" id="Animation_ynxlt"] +resource_name = "loop" +loop_mode = 1 +step = 0.1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 1), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 6.28319] +} + +[sub_resource type="Animation" id="Animation_cig5u"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [4.38234] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_ls1ie"] +_data = { +"RESET": SubResource("Animation_cig5u"), +"loop": SubResource("Animation_ynxlt"), +"spawn": SubResource("Animation_kmogx") +} + +[sub_resource type="CircleShape2D" id="CircleShape2D_tietk"] +radius = 19.2354 + +[node name="Star" instance=ExtResource("1_x6yf7")] +script = ExtResource("2_y4b0l") +fields = { +0: 10, +1: 5, +2: 0 +} +lifeTime = 1000.0 +autoLoopAnimation = true + +[node name="texture" parent="." index="0"] +rotation = 4.38234 +sprite_frames = SubResource("SpriteFrames_t53gb") + +[node name="animator" parent="texture" index="0"] +libraries = { +"": SubResource("AnimationLibrary_ls1ie") +} + +[node name="hitbox" parent="." index="1"] +shape = SubResource("CircleShape2D_tietk") diff --git a/components/Characters/Chick.tscn b/components/Characters/Chick.tscn index 451ac74..e9f9203 100644 --- a/components/Characters/Chick.tscn +++ b/components/Characters/Chick.tscn @@ -32,7 +32,7 @@ animations = [{ [node name="Chick" instance=ExtResource("1_goqmy")] script = ExtResource("2_r6bub") -cooldownUnit = 2000.0 +cooldownUnit = 3000.0 displayName = "小鸡" drops = Array[int]([0, 1]) dropCounts = Array[Vector2]([Vector2(10, 20), Vector2(7, 14)]) diff --git a/components/Characters/Hen.tscn b/components/Characters/Hen.tscn index 4027654..50d70db 100644 --- a/components/Characters/Hen.tscn +++ b/components/Characters/Hen.tscn @@ -33,7 +33,7 @@ radius = 40.0 [node name="Hen" instance=ExtResource("1_twxai")] script = ExtResource("2_8u5a0") -cooldownUnit = 500.0 +cooldownUnit = 1000.0 drops = Array[int]([0, 1]) dropCounts = Array[Vector2]([Vector2(4, 8), Vector2(2, 6)]) energy = 1000.0 diff --git a/components/Feeds/WaterBottle.tscn b/components/Feeds/WaterBottle.tscn index 89a4d74..6ca94cf 100644 --- a/components/Feeds/WaterBottle.tscn +++ b/components/Feeds/WaterBottle.tscn @@ -1,19 +1,18 @@ -[gd_scene load_steps=4 format=3 uid="uid://droytqrm4swm1"] +[gd_scene load_steps=3 format=3 uid="uid://droytqrm4swm1"] [ext_resource type="PackedScene" uid="uid://bykwevnv7keeh" path="res://components/Abstracts/FeedCardBase.tscn" id="1_vfxjq"] -[ext_resource type="Texture2D" uid="uid://bdknu6rkkpoyd" path="res://resources/feeds/fruitsalad.svg" id="2_8w6xu"] [ext_resource type="Texture2D" uid="uid://doyq5mp7wvv7s" path="res://resources/feeds/glass water-a.svg" id="2_gsfud"] [node name="FruitSalad" instance=ExtResource("1_vfxjq")] avatarTexture = ExtResource("2_gsfud") displayName = "一杯水" fields = Array[int]([3]) -fieldValues = Array[float]([0.22]) -costs = Array[int]([0]) -costCounts = Array[int]([400]) +fieldValues = Array[float]([0.25]) +costs = Array[int]([1]) +costCounts = Array[int]([500]) [node name="avatar" parent="container/info" index="0"] -texture = ExtResource("2_8w6xu") +texture = ExtResource("2_gsfud") [node name="name" parent="container/info" index="1"] -text = "[b]水果沙拉[/b]" +text = "[b]一杯水[/b]" diff --git a/resources/bullets/pencil/Chomp.wav.import b/resources/bullets/pencil/Chomp.wav.import new file mode 100644 index 0000000..4bf64aa --- /dev/null +++ b/resources/bullets/pencil/Chomp.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://bwq6pb7fhn4hw" +path="res://.godot/imported/Chomp.wav-7095f250875916c0d559e91887d7fc79.sample" + +[deps] + +source_file="res://resources/bullets/pencil/Chomp.wav" +dest_files=["res://.godot/imported/Chomp.wav-7095f250875916c0d559e91887d7fc79.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/resources/bullets/pencil/pencil-a.svg b/resources/bullets/pencil/frames/pencil-a.svg similarity index 100% rename from resources/bullets/pencil/pencil-a.svg rename to resources/bullets/pencil/frames/pencil-a.svg diff --git a/resources/bullets/pencil/pencil-a.svg.import b/resources/bullets/pencil/frames/pencil-a.svg.import similarity index 73% rename from resources/bullets/pencil/pencil-a.svg.import rename to resources/bullets/pencil/frames/pencil-a.svg.import index 8260197..46da646 100644 --- a/resources/bullets/pencil/pencil-a.svg.import +++ b/resources/bullets/pencil/frames/pencil-a.svg.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dnpqfqfg6dwt4" -path="res://.godot/imported/pencil-a.svg-280308b2cbe43bf6b55157df2b4e5c5f.ctex" +path="res://.godot/imported/pencil-a.svg-96396af0fe49ebefbf40b2464d79c347.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://resources/bullets/pencil/pencil-a.svg" -dest_files=["res://.godot/imported/pencil-a.svg-280308b2cbe43bf6b55157df2b4e5c5f.ctex"] +source_file="res://resources/bullets/pencil/frames/pencil-a.svg" +dest_files=["res://.godot/imported/pencil-a.svg-96396af0fe49ebefbf40b2464d79c347.ctex"] [params] diff --git a/resources/bullets/star/frames/star.svg b/resources/bullets/star/frames/star.svg new file mode 100644 index 0000000..9f4f82c --- /dev/null +++ b/resources/bullets/star/frames/star.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/resources/bullets/star/frames/star.svg.import b/resources/bullets/star/frames/star.svg.import new file mode 100644 index 0000000..db57e6f --- /dev/null +++ b/resources/bullets/star/frames/star.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://csdjmin6g22sw" +path="res://.godot/imported/star.svg-436a9060c4ccdd062ecebfeda31fc179.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://resources/bullets/star/frames/star.svg" +dest_files=["res://.godot/imported/star.svg-436a9060c4ccdd062ecebfeda31fc179.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 diff --git a/resources/sounds/effect/Chomp.wav b/resources/sounds/effect/Chomp.wav index fde1183c5e73c198c5dfbe9f808cd0bb915aadf0..951b2db2826b07fee5722ab71ecb3ab044051572 100644 GIT binary patch literal 25398 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 UNcpB1BQ)YKUwo+57oIQsf9-`oA^-pY literal 25398 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 diff --git a/scripts/Contents/Bullets/Diamond.gd b/scripts/Contents/Bullets/Diamond.gd index 2281dd8..5c48b01 100644 --- a/scripts/Contents/Bullets/Diamond.gd +++ b/scripts/Contents/Bullets/Diamond.gd @@ -1,9 +1,9 @@ extends BulletBase class_name Diamond +const traceTime = 1000 + func ai(): - var tracing = timeLived() < 1000 - if tracing: - rotation = lerp_angle(rotation, position.angle_to_point(launcher.currentFocusedBoss.position), 0.1) - canDamageSelf = !tracing + rotation = lerp_angle(rotation, position.angle_to_point(launcher.currentFocusedBoss.position), 0.2 * (traceTime - timeLived())) + canDamageSelf = !(timeLived() >= traceTime) forward(Vector2.from_angle(rotation)) diff --git a/scripts/Contents/Bullets/Laser.gd b/scripts/Contents/Bullets/Laser.gd index ee46b66..e7c1d8e 100644 --- a/scripts/Contents/Bullets/Laser.gd +++ b/scripts/Contents/Bullets/Laser.gd @@ -2,5 +2,5 @@ extends BulletBase class_name Laser func ai(): - rotation_degrees += 2 + rotation_degrees += 5 position = launcher.texture.global_position diff --git a/scripts/Contents/Bullets/Star.gd b/scripts/Contents/Bullets/Star.gd new file mode 100644 index 0000000..d78d93e --- /dev/null +++ b/scripts/Contents/Bullets/Star.gd @@ -0,0 +1,5 @@ +extends BulletBase +class_name Star + +func ai(): + forward(Vector2.from_angle(rotation)) diff --git a/scripts/Contents/Characters/Chick.gd b/scripts/Contents/Characters/Chick.gd index 4b96e89..d274870 100644 --- a/scripts/Contents/Characters/Chick.gd +++ b/scripts/Contents/Characters/Chick.gd @@ -22,13 +22,14 @@ func attack(type): if type == 0: var weaponPos = findWeaponAnchor("normal") for i in randi_range(10, 20): - return BulletBase.generate(preload("res://components/Bullets/Diamond.tscn"), self, weaponPos + MathTool.randv2_range(20), rotation + deg_to_rad(randf_range(-90, 90))) + BulletBase.generate(preload("res://components/Bullets/Diamond.tscn"), self, weaponPos + MathTool.randv2_range(20), rotation + deg_to_rad(randf_range(-90, 90))) elif type == 1: for i in range(laserCount): - return BulletBase.generate(preload("res://components/Bullets/Laser.tscn"), self, texture.global_position, deg_to_rad(90 * i)) + BulletBase.generate(preload("res://components/Bullets/Laser.tscn"), self, texture.global_position, deg_to_rad(90 * i)) elif type == 2: var weaponPos = findWeaponAnchor("normal") var target = weaponPos.angle_to_point(currentFocusedBoss.position) firepot.global_rotation = target firepot.shot() - return BulletBase.generate(preload("res://components/Bullets/FireScan.tscn"), self, weaponPos, target) + BulletBase.generate(preload("res://components/Bullets/FireScan.tscn"), self, weaponPos, target) + return true diff --git a/scripts/Contents/Characters/Hen.gd b/scripts/Contents/Characters/Hen.gd index 9a79829..ba0d34b 100644 --- a/scripts/Contents/Characters/Hen.gd +++ b/scripts/Contents/Characters/Hen.gd @@ -12,4 +12,6 @@ func ai(): func attack(type): if type == 0: var weaponPos = findWeaponAnchor("normal") - return BulletBase.generate(preload("res://components/Bullets/HenBomb.tscn"), self, weaponPos, 0) + for i in randi_range(1, 4): + BulletBase.generate(preload("res://components/Bullets/Star.tscn"), self, weaponPos, randf_range(0, PI * 2)) + return true diff --git a/scripts/Contents/Characters/Rooster.gd b/scripts/Contents/Characters/Rooster.gd index b742d2a..f1f4239 100644 --- a/scripts/Contents/Characters/Rooster.gd +++ b/scripts/Contents/Characters/Rooster.gd @@ -19,8 +19,8 @@ func ai(): func attack(type): if type == 0: var weaponPos = findWeaponAnchor("normal") - return BulletBase.generate(preload("res://components/Bullets/Pencil.tscn"), self, weaponPos, (get_global_mouse_position() - weaponPos).angle()) - # return BulletBase.generate(preload("res://components/Bullets/PurpleCrystal.tscn"), self, weaponPos, (get_global_mouse_position() - weaponPos).angle()) + # return BulletBase.generate(preload("res://components/Bullets/Pencil.tscn"), self, weaponPos, (get_global_mouse_position() - weaponPos).angle()) + return BulletBase.generate(preload("res://components/Bullets/PurpleCrystal.tscn"), self, weaponPos, (get_global_mouse_position() - weaponPos).angle()) func sprint(): move(Vector2( Input.get_axis("m_left", "m_right"), diff --git a/scripts/Statemachine/BulletBase.gd b/scripts/Statemachine/BulletBase.gd index 106002b..3310850 100644 --- a/scripts/Statemachine/BulletBase.gd +++ b/scripts/Statemachine/BulletBase.gd @@ -10,7 +10,9 @@ class_name BulletBase @export var lifeTime: float = -1 # -1表示无限时间 @export var indisDamage: bool = false # 是否无差别伤害(不区分敌我) @export var canDamageSelf: bool = false # 是否可以伤害发射者 -@export var needEnergy: float = 4.0 # 发射时需要消耗的能量 +@export var needEnergy: float = 0.0 # 发射时需要消耗的能量 +@export var autoSpawnAnimation: bool = false +@export var autoLoopAnimation: bool = false @onready var animator: AnimationPlayer = $"%animator" @onready var hitbox: CollisionShape2D = $"%hitbox" @@ -24,8 +26,12 @@ func _ready(): area_entered.connect(hit) spawnInWhen = Time.get_ticks_msec() spawnInWhere = position - animator.play("spawn") spawn() + if autoSpawnAnimation: + animator.play("spawn") + await animator.animation_finished + if autoLoopAnimation: + animator.play("loop") func _process(_delta: float) -> void: if lifeTime > 0: if Time.get_ticks_msec() - spawnInWhen >= lifeTime: diff --git a/scripts/Statemachine/EntityBase.gd b/scripts/Statemachine/EntityBase.gd index ac4414c..46d0925 100644 --- a/scripts/Statemachine/EntityBase.gd +++ b/scripts/Statemachine/EntityBase.gd @@ -71,7 +71,7 @@ func _process(_delta): for i in inventory: inventory[i] = clamp(inventory[i], 0, inventoryMax[i]) func _physics_process(_delta: float) -> void: - animatree.set("parameters/blend_position", lerpf(animatree.get("parameters/blend_position"), lastDirection, 0.1)) + animatree.set("parameters/blend_position", lerpf(animatree.get("parameters/blend_position"), lastDirection, 0.2)) if sprinting: velocity *= 0.9 if velocity.length() <= 100: