1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-06-04 02:37:12 +08:00

feat(角色): 为熊角色添加阶段转换功能

添加阶段转换系统,当熊的生命值低于50%时进入第二阶段
- 添加mask精灵用于阶段变化视觉效果
- 实现enterStage和exitStage方法处理阶段转换
- 添加stageAnimator处理转换动画
- 调整攻击7的音效播放位置
This commit is contained in:
2025-09-14 13:35:02 +08:00
parent 997d6d1fe8
commit 054baa4a71
4 changed files with 212 additions and 4 deletions
+19
View File
@@ -78,6 +78,7 @@ var inventoryMax = {
@onready var hurtbox: Area2D = $"%hurtbox"
@onready var sounds: Node2D = $"%sounds"
@onready var hurtAnimator: AnimationPlayer = $"%hurtAnimator"
@onready var stageAnimator: AnimationPlayer = $"%stageAnimator"
@onready var damageAnchor: Node2D = $"%damageAnchor"
@onready var trailParticle: GPUParticles2D = $"%trailParticle"
@onready var weaponStore = $"%weaponStore"
@@ -94,6 +95,7 @@ var currentFocusedBoss: EntityBase = null
var charginup: bool = false
var weapons: Array[Weapon] = []
var canRunAi: bool = true
var currentStage: int = 0
func _ready():
register()
@@ -164,6 +166,19 @@ func _physics_process(_delta: float) -> void:
trailParticle.emitting = trailing
# 通用方法
func setStage(stage: int):
if currentStage == stage:
return
canRunAi = false
var oldStage = currentStage
currentStage = stage
stageAnimator.play("exit")
await stageAnimator.animation_finished
await exitStage(oldStage)
await enterStage(stage)
stageAnimator.play("enter")
await stageAnimator.animation_finished
canRunAi = true
func applyLevel():
fields[FieldStore.Entity.MAX_HEALTH] *= (1 + GameRule.entityHealthIncreasePerWave * (GameRule.difficulty + 1)) ** level
fields[FieldStore.Entity.DAMAGE_MULTIPILER] *= (1 + GameRule.entityDamageIncreasePerWave * (GameRule.difficulty + 1)) ** level
@@ -342,6 +357,10 @@ func register():
pass
func spawn():
pass
func exitStage(_stage: int):
pass
func enterStage(_stage: int):
pass
static func generate(
entity: PackedScene,