From 6cf3c409e376824955ddfd0a206d6defda9f0068 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: Sat, 6 Sep 2025 09:01:46 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=AD=A6=E5=99=A8=E7=B3=BB=E7=BB=9F):=20?= =?UTF-8?q?=E9=87=8D=E6=9E=84LGBT=E6=AD=A6=E5=99=A8=E5=92=8C=E5=AD=90?= =?UTF-8?q?=E5=BC=B9=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改BulletBase.generate返回子弹实例数组而非数量 - 新增LGBTBoom特效场景 - 降低LGBT武器能量消耗从150降至10 - 移除Rooster角色的攻击方法,改为使用武器系统 - 重构LGBT子弹追踪逻辑,增加追踪时间和效率参数 - 在LGBT武器攻击时设置子弹伤害和追踪目标 --- components/Effects/LGBTBoom.tscn | 5 +++++ components/Weapons/LGBT.tscn | 2 +- scripts/Contents/Bullets/LGBTBullet.gd | 14 +++++--------- scripts/Contents/Characters/Rooster.gd | 7 ------- scripts/Contents/Weapons/LGBTWeapon.gd | 7 ++++++- scripts/Statemachine/BulletBase.gd | 2 +- 6 files changed, 18 insertions(+), 19 deletions(-) create mode 100644 components/Effects/LGBTBoom.tscn diff --git a/components/Effects/LGBTBoom.tscn b/components/Effects/LGBTBoom.tscn new file mode 100644 index 0000000..3c15d88 --- /dev/null +++ b/components/Effects/LGBTBoom.tscn @@ -0,0 +1,5 @@ +[gd_scene load_steps=2 format=3 uid="uid://ddj4xiia81g28"] + +[ext_resource type="PackedScene" uid="uid://bcvuuy2m0pke0" path="res://components/Abstracts/EffectBase.tscn" id="1_qfayo"] + +[node name="LGBTBoom" instance=ExtResource("1_qfayo")] diff --git a/components/Weapons/LGBT.tscn b/components/Weapons/LGBT.tscn index 0ec2564..524507e 100644 --- a/components/Weapons/LGBT.tscn +++ b/components/Weapons/LGBT.tscn @@ -21,7 +21,7 @@ store = { } storeType = Array[int]([2, 0, 0, 1, 0]) descriptionTemplate = "发射$count条,每条间分隔$angle,可追踪$trace秒,效率为$power的带状彩虹,每条造成$atk点伤害。" -needEnergy = 150.0 +needEnergy = 10.0 cooldown = 2000.0 [node name="avatar" parent="container/info" index="0"] diff --git a/scripts/Contents/Bullets/LGBTBullet.gd b/scripts/Contents/Bullets/LGBTBullet.gd index 9d35b81..834d2e4 100644 --- a/scripts/Contents/Bullets/LGBTBullet.gd +++ b/scripts/Contents/Bullets/LGBTBullet.gd @@ -1,10 +1,10 @@ extends BulletBase class_name LGBTBullet -var myTracer: EntityBase = null +var tracer: EntityBase = null +var maxTraceTime: float = 0 +var tracePower: float -func spawn(): - findTracer() func register(): speed = 1 damage = 5 @@ -12,10 +12,6 @@ func ai(): texture.rotation_degrees += speed speed *= 1.05 speed = clamp(speed, 0, 20) - if is_instance_valid(myTracer): - PresetAIs.trace(self, myTracer.position, clamp(speed / 150, 0, 1)) - else: - findTracer() + if is_instance_valid(tracer) and timeLived() < maxTraceTime: + PresetAIs.trace(self, tracer.position, clamp(speed / 50 * tracePower, 0, 1)) PresetAIs.forward(self, rotation) -func findTracer(): - myTracer = EntityTool.findClosetEntity(position, get_tree(), false, true) diff --git a/scripts/Contents/Characters/Rooster.gd b/scripts/Contents/Characters/Rooster.gd index 809dcdc..c186888 100644 --- a/scripts/Contents/Characters/Rooster.gd +++ b/scripts/Contents/Characters/Rooster.gd @@ -21,13 +21,6 @@ func ai(): trySprint() if Input.is_action_just_pressed("heal"): tryHeal(20) -func attack(type): - if type == 0: - var weaponPos = findWeaponAnchor("normal") - BulletBase.generate(preload("res://components/Bullets/LGBTBullet.tscn"), self, weaponPos, deg_to_rad(randf_range(0, 360))) - elif type == 1: - var weaponPos = findWeaponAnchor("normal") - return BulletBase.generate(preload("res://components/Bullets/BigLaser.tscn"), self, weaponPos, (get_global_mouse_position() - weaponPos).angle()) func sprint(): move(Vector2( Input.get_axis("m_left", "m_right"), diff --git a/scripts/Contents/Weapons/LGBTWeapon.gd b/scripts/Contents/Weapons/LGBTWeapon.gd index 5048f5e..a3e5ae3 100644 --- a/scripts/Contents/Weapons/LGBTWeapon.gd +++ b/scripts/Contents/Weapons/LGBTWeapon.gd @@ -14,5 +14,10 @@ func attack(entity: EntityBase): var facingAngle = (get_global_mouse_position() - weaponPos).angle() var startAngle = facingAngle - deg_to_rad(readStore("angle") * (readStore("count") / 2)) for i in range(int(readStore("count"))): - BulletBase.generate(preload("res://components/Bullets/LGBTBullet.tscn"), entity, weaponPos, startAngle + deg_to_rad(readStore("angle") * i)) + for j in BulletBase.generate(preload("res://components/Bullets/LGBTBullet.tscn"), entity, weaponPos, startAngle + deg_to_rad(readStore("angle") * i)): + var bullet: LGBTBullet = j + bullet.damage = readStore("atk") + bullet.tracer = EntityTool.findClosetEntity(get_global_mouse_position(), get_tree(), !entity.isPlayer(), entity.isPlayer()) + bullet.maxTraceTime = readStore("trace") * 1000 + bullet.tracePower = readStore("power") return true diff --git a/scripts/Statemachine/BulletBase.gd b/scripts/Statemachine/BulletBase.gd index 7b23da1..7703c01 100644 --- a/scripts/Statemachine/BulletBase.gd +++ b/scripts/Statemachine/BulletBase.gd @@ -146,4 +146,4 @@ static func generate( if addToWorld: WorldManager.rootNode.call_deferred("add_child", instance) instances.append(instance) - return len(instances) + return instances