From 63963fd5fdcd30decc3aba2f928ff05c695de248 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, 17 Sep 2025 22:35:16 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E8=A7=92=E8=89=B2):=20=E8=B0=83=E6=95=B4K?= =?UTF-8?q?ukeMC=E6=94=BB=E5=87=BB=E6=A8=A1=E5=BC=8F=E5=92=8C=E5=AD=90?= =?UTF-8?q?=E5=BC=B9=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 减少攻击2的子弹数量范围从60-80改为20-40 - 增加子弹生成间隔时间从50ms改为100ms - 为HeavyCrystal子弹添加新的动画效果和材质 - 添加垂直编辑引导线到角色元数据 --- .../BossAttack/KukeMC/HeavyCrystal.tscn | 113 +++++++++++++++++- components/Characters/KukeMC.tscn | 1 + scripts/Contents/Characters/KukeMC.gd | 6 +- 3 files changed, 112 insertions(+), 8 deletions(-) diff --git a/components/Bullets/BossAttack/KukeMC/HeavyCrystal.tscn b/components/Bullets/BossAttack/KukeMC/HeavyCrystal.tscn index 0e8f914..5fd1e22 100644 --- a/components/Bullets/BossAttack/KukeMC/HeavyCrystal.tscn +++ b/components/Bullets/BossAttack/KukeMC/HeavyCrystal.tscn @@ -1,16 +1,119 @@ -[gd_scene load_steps=5 format=3 uid="uid://dxd6ikymj0fge"] +[gd_scene load_steps=10 format=3 uid="uid://dxd6ikymj0fge"] [ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_mf7ha"] [ext_resource type="Script" path="res://scripts/Statemachine/ShaderStage.gd" id="2_75div"] +[ext_resource type="Texture2D" uid="uid://c7hyatbuieaj" path="res://resources/bullets/purple-crystal/frames/0.svg" id="2_ghoc2"] [ext_resource type="Shader" path="res://shaders/Ring.gdshader" id="2_utujj"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_1i43q"] shader = ExtResource("2_utujj") -shader_parameter/inner = 0.5 -shader_parameter/outer = 0.75 +shader_parameter/inner = 0.95 +shader_parameter/outer = 1.0 -[node name="BulletBase" instance=ExtResource("1_mf7ha")] +[sub_resource type="SpriteFrames" id="SpriteFrames_e150r"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": ExtResource("2_ghoc2") +}], +"loop": true, +"name": &"default", +"speed": 5.0 +}] -[node name="track" type="Node2D" parent="texture" index="1"] +[sub_resource type="Animation" id="Animation_qobcv"] +resource_name = "spawn" +length = 0.3 +step = 0.1 +tracks/0/type = "bezier" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("%texture/..:scale:x") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"handle_modes": PackedInt32Array(0, 0), +"points": PackedFloat32Array(2, -0.15, 0, 0.15, 0, 1, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0, 0.3) +} +tracks/1/type = "bezier" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("%texture/..:scale:y") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"handle_modes": PackedInt32Array(0, 0), +"points": PackedFloat32Array(2, -0.15, 0, 0.15, 0, 1, -0.25, 0, 0.25, 0), +"times": PackedFloat32Array(0, 0.3) +} +tracks/2/type = "bezier" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("%texture/..:modulate:a") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"handle_modes": PackedInt32Array(0, 0), +"points": PackedFloat32Array(0, -0.15, 0, 0.15, 0, 1, -0.15, 0, 0.15, 0), +"times": PackedFloat32Array(0, 0.3) +} + +[sub_resource type="Animation" id="Animation_dwk2v"] +length = 0.001 +tracks/0/type = "bezier" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("%texture/..: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("%texture/..: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("%texture/..:modulate:a") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"handle_modes": PackedInt32Array(0), +"points": PackedFloat32Array(1, -0.15, 0, 0.15, 0), +"times": PackedFloat32Array(0) +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_mdce7"] +_data = { +"RESET": SubResource("Animation_dwk2v"), +"spawn": SubResource("Animation_qobcv") +} + +[node name="HeavyCrystal" instance=ExtResource("1_mf7ha")] + +[node name="track" type="Node2D" parent="." index="0"] material = SubResource("ShaderMaterial_1i43q") script = ExtResource("2_75div") +size = Vector2(150, 150) +color = Color(0.451438, 0.278306, 1.44392e-07, 1) + +[node name="texture" parent="." index="1"] +position = Vector2(73, 0) +sprite_frames = SubResource("SpriteFrames_e150r") + +[node name="animator" parent="texture" index="0"] +libraries = { +"": SubResource("AnimationLibrary_mdce7") +} diff --git a/components/Characters/KukeMC.tscn b/components/Characters/KukeMC.tscn index a8a7a7d..66ff070 100644 --- a/components/Characters/KukeMC.tscn +++ b/components/Characters/KukeMC.tscn @@ -29,6 +29,7 @@ size = Vector2(150, 150) [node name="KukeMC" instance=ExtResource("1_r4q7y")] script = ExtResource("2_s2dg5") displayName = "酷可mc" +metadata/_edit_vertical_guides_ = [76.0] [node name="collect" parent="sounds" index="4"] stream = null diff --git a/scripts/Contents/Characters/KukeMC.gd b/scripts/Contents/Characters/KukeMC.gd index 7563f5a..9ed19c9 100644 --- a/scripts/Contents/Characters/KukeMC.gd +++ b/scripts/Contents/Characters/KukeMC.gd @@ -38,10 +38,10 @@ func attack(type): child.currentFocusedBoss = currentFocusedBoss child.masterMine = self elif type == 2: - var count = randi_range(60, 80) + var count = randi_range(20, 40) for i in count: var count1 = 3 for j in count1: fields[FieldStore.Entity.OFFSET_SHOOT] = 0 - BulletBase.generate(preload("res://components/Bullets/PurpleCrystal.tscn"), self, findWeaponAnchor("normal"), 360.0 / count * i + 360.0 / count1 * j) - await TickTool.millseconds(50) + BulletBase.generate(preload("res://components/Bullets/PurpleCrystal.tscn"), self, findWeaponAnchor("normal"), deg_to_rad(360.0 / count * i + 360.0 / count1 * j)) + await TickTool.millseconds(100)