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

feat(战斗系统): 改进敌人生成逻辑以围绕玩家位置生成

修改Wave.spawn方法以接受中心点参数,使敌人生成位置围绕玩家
在Starter和MakeFeed面板中调用spawnWave时计算玩家中心位置
重构EntityBase添加getPlayers方法获取所有玩家实体
重命名WorldManager.nextWave为doNextWave以更清晰表达意图
This commit is contained in:
2025-12-14 15:01:01 +08:00
parent 4648fedc73
commit 74d3e03fef
5 changed files with 26 additions and 12 deletions
+5 -1
View File
@@ -50,7 +50,11 @@ func updateValue():
countLabel.text = str(UIState.player.fields[FieldStore.Entity.FEED_COUNT_CAN_MADE] - selectedCount)
needBB.count = refreshNeedBaseballCount
func finish():
WorldManager.rootNode.spawnWave()
var center = Vector2.ZERO
for player in EntityBase.getPlayers():
center += player.position
center /= len(EntityBase.getPlayers())
WorldManager.rootNode.spawnWave(center)
UIState.closeCurrentPanel()
func regenerateCards():
updateValue()
+1 -1
View File
@@ -64,7 +64,7 @@ func startSingleplayerGame():
MultiplayerState.isMultiplayer = false
MultiplayerState.playerName = playerNameInput.text
EntityBase.generatePlayer(playerNameInput.text)
WorldManager.rootNode.spawnWave()
WorldManager.rootNode.spawnWave(Vector2.ZERO)
UIState.closeCurrentPanel()
func _ready():
+2 -2
View File
@@ -82,13 +82,13 @@ static func entityCountOf(wave: Wave) -> int:
elif !hasBoss():
return randi_range(ceil(wave.minCount), floor(wave.maxCount * (1 + GameRule.entityCountBoostPerWave * current)))
return 0
static func spawn() -> Array:
static func spawn(center: Vector2) -> Array:
var result: Array = []
for i in range(len(data)):
var wave: Wave = data[i]
for j in range(entityCountOf(wave)):
var currentWave = wave.duplicate()
currentWave.entityPosition = MathTool.randv2_range(500)
currentWave.entityPosition = MathTool.randv2_range(500) + center
result.append(currentWave)
return result
static func next(waves: Array):