From 36bdd8fc27cbee26c202065737af19edc823a5db 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, 21 Sep 2025 07:06:43 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=AD=A6=E5=99=A8=E7=B3=BB=E7=BB=9F):=20?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=A0=B8=E5=BC=B9=E4=BC=A4=E5=AE=B3=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E5=B9=B6=E6=B7=BB=E5=8A=A0=E5=B1=8F=E5=B9=95=E9=9C=87?= =?UTF-8?q?=E5=8A=A8=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 降低核弹基础伤害但提高升级后伤害 - 修改爆炸半径范围描述 - 为核弹爆炸添加随时间递减的屏幕震动效果 - 重构CameraManager的shake方法以支持自定义震动曲线 --- components/Weapons/NuclearBomb.tscn | 5 ++--- scripts/Contents/Bullets/NuclearBomb.gd | 1 + scripts/Tools/CameraManager.gd | 13 +++++++++---- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/components/Weapons/NuclearBomb.tscn b/components/Weapons/NuclearBomb.tscn index 3238c2e..da0c105 100644 --- a/components/Weapons/NuclearBomb.tscn +++ b/components/Weapons/NuclearBomb.tscn @@ -12,7 +12,7 @@ quality = 4 typeTopic = 2 costBeachball = 100 store = { -"atk": 200, +"atk": 10, "radius": 400.0 } storeType = { @@ -22,7 +22,6 @@ storeType = { descriptionTemplate = "倒计时10秒后对半径$radius范围的实体造成$atk点[b]无差别伤害[/b]。" needEnergy = 200.0 cooldown = 1000.0 -debugRebuild = true [node name="avatar" parent="container/info" index="0"] texture = ExtResource("2_5nh8i") @@ -45,4 +44,4 @@ typeTopicColorMap = { } [node name="description" parent="container" index="2"] -text = "[center]倒计时10秒后对半径[color=cyan]400[/color]→[color=yellow]1020[/color]范围的实体造成[color=cyan]200[/color]→[color=yellow]45[/color]点[b]无差别伤害[/b]。[/center]" +text = "[center]倒计时10秒后对半径[color=cyan]400[/color]→[color=yellow]420[/color]范围的实体造成[color=cyan]200[/color]→[color=yellow]225[/color]点[b]无差别伤害[/b]。[/center]" diff --git a/scripts/Contents/Bullets/NuclearBomb.gd b/scripts/Contents/Bullets/NuclearBomb.gd index 7b0e3de..196df0a 100644 --- a/scripts/Contents/Bullets/NuclearBomb.gd +++ b/scripts/Contents/Bullets/NuclearBomb.gd @@ -20,4 +20,5 @@ func ai(): func destroy(_b): EffectController.create(preload("res://components/Effects/NuclearExplosion.tscn"), global_position).shot() hitbox.disabled = false + CameraManager.shake(5000, 250, func(_c, t, r): return t * r) # 震屏强度随进度递减 await TickTool.frame(5) diff --git a/scripts/Tools/CameraManager.gd b/scripts/Tools/CameraManager.gd index ecbfff8..07c65e1 100644 --- a/scripts/Tools/CameraManager.gd +++ b/scripts/Tools/CameraManager.gd @@ -15,9 +15,14 @@ func _physics_process(_delta): position = UIState.player.position position += MathTool.randv2_range(shakeIntensity) -static func shake(millseconds: int, intensity: float = 10): - instance.shakeIntensity += intensity - await TickTool.millseconds(millseconds) - instance.shakeIntensity -= intensity +static func shake(millseconds: float, intensity: float = 10, steper: Callable = func(currentValue, _totalValue, _restPercent): return currentValue): + var startTime = WorldManager.getTime() + instance.shakeIntensity = intensity + await TickTool.until( + func(): + instance.shakeIntensity = steper.call(instance.shakeIntensity, intensity, 1 - (WorldManager.getTime() - startTime) / millseconds) + return WorldManager.getTime() - startTime >= millseconds + ) + instance.shakeIntensity = 0 static func playAnimation(animation: String): instance.animator.play(animation)