From 9e77b720d6aa191c3b115e6c517c7fbf87b19ef8 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: Sun, 16 Nov 2025 14:32:33 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E8=A7=92=E8=89=B2):=20=E8=B0=83=E6=95=B4R?= =?UTF-8?q?ooster=E5=8F=97=E4=BC=A4=E6=97=B6=E7=9A=84=E7=BE=BD=E6=AF=9B?= =?UTF-8?q?=E6=8E=89=E8=90=BD=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 为Rooster添加受伤时的羽毛掉落特效 - 调整FeatherFall粒子效果参数,包括速度、重力和大小 - 修改DogCircle子弹的初始状态和动画时间 - 调整Dog武器节点的位置 - 为EntityBase的受伤方法添加注释 --- components/Bullets/DogCircle.tscn | 9 +++++---- components/Characters/Dog.tscn | 1 + components/Effects/FeatherFall.tscn | 14 ++++++++------ scripts/Contents/Characters/Rooster.gd | 4 ++++ scripts/Statemachine/EntityBase.gd | 1 + 5 files changed, 19 insertions(+), 10 deletions(-) diff --git a/components/Bullets/DogCircle.tscn b/components/Bullets/DogCircle.tscn index df767f9..39d4122 100644 --- a/components/Bullets/DogCircle.tscn +++ b/components/Bullets/DogCircle.tscn @@ -17,7 +17,7 @@ tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, -"values": [Vector2(1, 1)] +"values": [Vector2(0, 0)] } tracks/1/type = "value" tracks/1/imported = false @@ -29,7 +29,7 @@ tracks/1/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, -"values": [1.0] +"values": [0.0] } [sub_resource type="Animation" id="Animation_oinqg"] @@ -76,7 +76,7 @@ tracks/1/path = NodePath("texture:material:shader_parameter/alpha") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/keys = { -"times": PackedFloat32Array(0, 0.25, 0.6, 1), +"times": PackedFloat32Array(0, 0.1, 0.6, 1), "transitions": PackedFloat32Array(1, 1, 1, 1), "update": 0, "values": [0.0, 1.0, 1.0, 0.0] @@ -94,7 +94,7 @@ _data = { shader = ExtResource("2_ddosv") shader_parameter/inner = 0.7999999821184 shader_parameter/outer = 0.999999977648 -shader_parameter/alpha = 1.0 +shader_parameter/alpha = 0.0 [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_ddosv"] radius = 13.0 @@ -115,6 +115,7 @@ libraries = { [node name="texture" type="Node2D" parent="texture" index="1"] modulate = Color(1, 1, 1, 0.08421052) material = SubResource("ShaderMaterial_qyd4u") +scale = Vector2(1e-05, 1e-05) script = ExtResource("3_qyd4u") size = Vector2(40, 150) color = Color(1, 1, 1, 0) diff --git a/components/Characters/Dog.tscn b/components/Characters/Dog.tscn index f621be6..82c6d76 100644 --- a/components/Characters/Dog.tscn +++ b/components/Characters/Dog.tscn @@ -42,6 +42,7 @@ sprite_frames = SubResource("SpriteFrames_tn3v8") animation = &"idle" [node name="normal" type="Node2D" parent="texture/weapons" index="0"] +position = Vector2(53, -35) [node name="statebar" parent="." index="4"] position = Vector2(0, -150) diff --git a/components/Effects/FeatherFall.tscn b/components/Effects/FeatherFall.tscn index 62910f2..50a9356 100644 --- a/components/Effects/FeatherFall.tscn +++ b/components/Effects/FeatherFall.tscn @@ -19,20 +19,22 @@ curve = SubResource("Curve_k2423") [sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_kg7ml"] particle_flag_disable_z = true +emission_shape = 1 +emission_sphere_radius = 50.0 angle_min = 1.0728835e-05 angle_max = 45.00001 angle_curve = SubResource("CurveTexture_lwtk5") spread = 180.0 -initial_velocity_min = 20.0 -initial_velocity_max = 40.0 -gravity = Vector3(0, 0, 0) -scale_min = 0.099999994 -scale_max = 0.14999999 +initial_velocity_min = 50.0 +initial_velocity_max = 100.0 +gravity = Vector3(0, 98, 0) +scale_min = 0.06 +scale_max = 0.099999994 alpha_curve = SubResource("CurveTexture_suj3b") [node name="FeatherFall" instance=ExtResource("1_tppsq")] [node name="particles" parent="." index="1"] -amount = 2 +amount = 1 texture = ExtResource("2_k2423") process_material = SubResource("ParticleProcessMaterial_kg7ml") diff --git a/scripts/Contents/Characters/Rooster.gd b/scripts/Contents/Characters/Rooster.gd index 26cf3a9..28fd4a9 100644 --- a/scripts/Contents/Characters/Rooster.gd +++ b/scripts/Contents/Characters/Rooster.gd @@ -4,6 +4,10 @@ class_name Rooster func register(): attackCooldownMap[0] = 200 attackCooldownMap[1] = 6000 + hit.connect( + func(_damage: float, _bullet: BulletBase, _crit: bool): + EffectController.create(ComponentManager.getEffect("FeatherFall"), texture.global_position).shot() + ) func ai(): texture.play("walk") var direction = Vector2( diff --git a/scripts/Statemachine/EntityBase.gd b/scripts/Statemachine/EntityBase.gd index c0e84da..ccba4e1 100644 --- a/scripts/Statemachine/EntityBase.gd +++ b/scripts/Statemachine/EntityBase.gd @@ -224,6 +224,7 @@ func getSprintInitialDisplace(): func getSprintProgress(): return velocity.length() / getSprintInitialDisplace().length() func takeDamage(bullet: BulletBase, crit: bool): + # 当受伤时 hurtAnimator.play("hurt") var baseDamage: float = bullet.damage * bullet.launcher.fields.get(FieldStore.Entity.DAMAGE_MULTIPILER) * randf_range(1 - GameRule.damageOffset, 1 + GameRule.damageOffset) var damage = baseDamage + baseDamage * int(crit) * fields.get(FieldStore.Entity.CRIT_DAMAGE)