1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-28 06:51:54 +08:00
Files
Dog-Lynx-And-HCN/scripts/Contents/Wave.gd
T
fallingshrimp 547e059c5b feat(子弹系统): 将子弹添加到子弹组并调整KukeMC的检测逻辑
- 在BulletBase.gd中为生成的子弹实例添加"bullets"组
- 修改KukeMC.gd的ai逻辑,改为检测"bullets"组而非"bullet"组
- 调整KukeMC的子弹检测距离从100增加到200
- 移除KukeMC对bosses组的检测逻辑
- 在Wave.gd中将默认数据改为testBoss波次并添加KukeMC
- 为KukeMC场景添加脚本并设置初始生命值
2025-09-08 22:35:24 +08:00

60 lines
1.7 KiB
GDScript

class_name Wave
var entity: PackedScene
var minCount: int = 1
var maxCount: int = 1
var isBoss: bool = false
var from: float = 0
var to: float = 0
var per: int = 0
static var current: int = 0
# entity, minCount, maxCount, isBoss, from, to, per
static var presetWaves = {
"normal": [
create(preload("res://components/Characters/Hen.tscn"), 1, 5, false, 0, INF, 1),
create(preload("res://components/Characters/Chick.tscn"), 0, 0, true, 9, INF, 15),
create(preload("res://components/Characters/Bear.tscn"), 0, 0, true, 19, INF, 10),
],
"testBoss": [
# create(preload("res://components/Characters/Chick.tscn"), 1, 1, true, 0, INF, 1),
# create(preload("res://components/Characters/Bear.tscn"), 1, 1, true, 0, INF, 1),
create(preload("res://components/Characters/KukeMC.tscn"), 1, 1, true, 0, INF, 1),
]
}
static var data = presetWaves["testBoss"]
static func create(
entity_: PackedScene,
minCount_: int = 1,
maxCount_: int = 1,
isBoss_: bool = false,
from_: float = 0,
to_: float = 0,
per_: int = 0
) -> Wave:
var wave = Wave.new()
wave.entity = entity_
wave.minCount = minCount_
wave.maxCount = maxCount_
wave.isBoss = isBoss_
wave.from = from_
wave.to = to_
wave.per = per_
return wave
static func entityCountOf(wave: Wave) -> int:
if wave.from <= current and wave.to >= current and int(current - wave.from) % wave.per == 0:
if wave.isBoss:
return 1
else:
return randi_range(ceil(wave.minCount), floor(wave.maxCount * (1 + GameRule.entityCountBoostPerWave * current)))
return 0
static func spawn():
for i in range(len(data)):
var wave = data[i]
for j in range(entityCountOf(wave)):
EntityBase.generate(wave.entity, MathTool.randv2_range(500), true, wave.isBoss)
static func next():
spawn()
current += 1