From 86e14b3bfee6b37e3e6c594426e7d03c1107b4c2 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 10:51:40 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=AD=90=E5=BC=B9=E7=B3=BB=E7=BB=9F):=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AD=90=E5=BC=B9=E8=BF=BD=E8=B8=AA=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在EntityBase.gd中添加BULLET_TRACE字段,并在BulletBase.gd中实现追踪逻辑。FieldStore.gd中新增BULLET_TRACE枚举及相关配置,支持百分比类型的追踪强度设置 --- scripts/Statemachine/BulletBase.gd | 9 +++++++++ scripts/Statemachine/EntityBase.gd | 1 + scripts/Tools/FieldStore.gd | 8 ++++++-- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/scripts/Statemachine/BulletBase.gd b/scripts/Statemachine/BulletBase.gd index 7703c01..76a67a1 100644 --- a/scripts/Statemachine/BulletBase.gd +++ b/scripts/Statemachine/BulletBase.gd @@ -59,6 +59,15 @@ func _physics_process(_delta: float) -> void: if destroying: return if is_instance_valid(launcher) and (launcher.isPlayer() or is_instance_valid(launcher.currentFocusedBoss)): launcher.position -= Vector2.from_angle(rotation) * recoil + PresetAIs.trace( + self, + EntityTool.findClosetEntity(position, get_tree(), + !launcher.isPlayer(), + launcher.isPlayer(), + [launcher] + ).position, + launcher.fields.get(FieldStore.Entity.BULLET_TRACE) / 10 + ) ai() else: tryDestroy() diff --git a/scripts/Statemachine/EntityBase.gd b/scripts/Statemachine/EntityBase.gd index 80d55a1..9109eba 100644 --- a/scripts/Statemachine/EntityBase.gd +++ b/scripts/Statemachine/EntityBase.gd @@ -26,6 +26,7 @@ var fields = { FieldStore.Entity.EXTRA_BULLET_COUNT: 0, FieldStore.Entity.BULLET_SPLIT: 0, FieldStore.Entity.BULLET_REFRACTION: 0, + FieldStore.Entity.BULLET_TRACE: 0, "速度": TITLE_FLAG, FieldStore.Entity.MOVEMENT_SPEED: 1, FieldStore.Entity.ATTACK_SPEED: 1, diff --git a/scripts/Tools/FieldStore.gd b/scripts/Tools/FieldStore.gd index a852f60..5a33f5d 100644 --- a/scripts/Tools/FieldStore.gd +++ b/scripts/Tools/FieldStore.gd @@ -30,7 +30,8 @@ enum Entity { ENERGY_REGENERATION, DROPPED_ITEM_COLLECT_RADIUS, BULLET_SPLIT, - BULLET_REFRACTION + BULLET_REFRACTION, + BULLET_TRACE } static var entityMap = { Entity.MAX_HEALTH: "生命上限", @@ -57,6 +58,7 @@ static var entityMap = { Entity.DROPPED_ITEM_COLLECT_RADIUS: "掉落物拾取距离", Entity.BULLET_SPLIT: "分裂", Entity.BULLET_REFRACTION: "折射", + Entity.BULLET_TRACE: "追踪", } static var entityMapType = { Entity.MAX_HEALTH: DataType.VALUE, @@ -83,6 +85,7 @@ static var entityMapType = { Entity.DROPPED_ITEM_COLLECT_RADIUS: DataType.VALUE, Entity.BULLET_SPLIT: DataType.VALUE, Entity.BULLET_REFRACTION: DataType.VALUE, + Entity.BULLET_TRACE: DataType.PERCENT, } static var entityMaxValueMap = { Entity.CRIT_RATE: 0.8, @@ -90,7 +93,8 @@ static var entityMaxValueMap = { Entity.PENARATION_RESISTANCE: 0.5, Entity.PRICE_REDUCTION: 0.4, Entity.DROP_APPLE_RATE: 0.4, - Entity.FEED_COUNT_SHOW: 6 + Entity.FEED_COUNT_SHOW: 6, + Entity.BULLET_TRACE: 1, } static var entityApplier = { Entity.MAX_HEALTH: func(entity, value):