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):