1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-28 06:51:54 +08:00

feat(游戏平衡): 调整敌人生成和子弹行为

- 将敌人数量增长逻辑移至GameRule并调整计算公式
- 修改鸡的攻击行为,子弹现在会朝向玩家发射
- 调整子弹伤害值和旋转动画
- 减少玩家初始苹果数量并增加敌人掉落苹果数量
- 修改BOSS出现波数为第8波
- 移除无用属性和优化代码结构
This commit is contained in:
2025-08-28 07:45:50 +08:00
parent dfbacb0098
commit a572a77eda
7 changed files with 28 additions and 29 deletions
+3 -1
View File
@@ -4,14 +4,16 @@ class_name Hen
func _ready():
fields[FieldStore.Entity.MAX_HEALTH] = 75
fields[FieldStore.Entity.MOVEMENT_SPEED] = 0.25
fields[FieldStore.Entity.OFFSET_SHOOT] = 10
super._ready()
func ai():
cooldownUnit = randi_range(1500, 4000)
move(currentFocusedBoss.position - position)
tryAttack(0)
func attack(type):
if type == 0:
var weaponPos = findWeaponAnchor("normal")
for i in randi_range(1, 4):
BulletBase.generate(preload("res://components/Bullets/Star.tscn"), self, weaponPos, randf_range(0, PI * 2))
BulletBase.generate(preload("res://components/Bullets/Star.tscn"), self, weaponPos, (currentFocusedBoss.position - position).angle())
return true
+2 -3
View File
@@ -9,11 +9,10 @@ var to: float = 0
var per: int = 0
static var current: int = 0
static var countBoost: float = 0.1 # 每波增加的敌人数量百分比,指数级
static var data: Array[Wave] = [
# entity, minCount, maxCount, isBoss, from, to, per
create(preload("res://components/Characters/Hen.tscn"), 1, 5, false, 0, INF, 1),
create(preload("res://components/Characters/Chick.tscn"), 0, 0, true, 1, INF, 4)
create(preload("res://components/Characters/Chick.tscn"), 0, 0, true, 8, INF, 4)
]
static func create(
@@ -39,7 +38,7 @@ static func entityCountOf(wave: Wave) -> int:
if wave.isBoss:
return 1
else:
return randi_range(int(wave.minCount), int(wave.maxCount * ((1 + countBoost) ** current)))
return randi_range(ceil(wave.minCount), floor(wave.maxCount * (1 + GameRule.entityCountBoostPerWave * current)))
return 0
static func spawn():
for i in range(len(data)):
+4 -3
View File
@@ -32,7 +32,7 @@ var fields = {
var inventory = {
ItemStore.ItemType.BASEBALL: 100,
ItemStore.ItemType.BASKETBALL: 100,
ItemStore.ItemType.APPLE: 10,
ItemStore.ItemType.APPLE: 5, # 初始苹果数量
}
var inventoryMax = {
ItemStore.ItemType.BASEBALL: INF, # 无限
@@ -46,7 +46,7 @@ var inventoryMax = {
@export var sprintMultiplier: float = 4
@export var drops: Array[ItemStore.ItemType] = []
@export var dropCounts: Array[Vector2] = []
@export var appleCount: Vector2i = Vector2(0, 1) # 死亡后掉落的苹果数量
@export var appleCount: Vector2i = Vector2(0, 3) # 死亡后掉落的苹果数量
@onready var animatree: AnimationTree = $"%animatree"
@onready var texture: AnimatedSprite2D = $"%texture"
@@ -57,7 +57,7 @@ var inventoryMax = {
var statebar: EntityStateBar
var health: float = 0
@export var energy: float = 0
var energy: float = 0
var sprinting: bool = false
var lastDirection: int = 1
@@ -72,6 +72,7 @@ func _ready():
statebar = selfStatebar
statebar.entity = self
health = fields.get(FieldStore.Entity.MAX_HEALTH)
energy = fields.get(FieldStore.Entity.MAX_ENERGY) * 0.5
if isPlayer():
UIState.player = self
hurtbox.body_entered.connect(
+2 -1
View File
@@ -6,4 +6,5 @@ static var damageOffset: float = 0.2 # 伤害随机浮动比例,默认20%,
static var damageLabelSpawnOffset: float = 10 # 伤害标签生成位置的随机偏移
static var itemDroppedSpawnOffset: float = 30 # 掉落物生成位置的随机偏移
static var appleDropRate: float = 0.1 # 苹果掉落概率
static var refreshCountIncreasePercent: Vector2 = Vector2(0.4, 1.1) # 刷新所需的棒球数量的增加的百分比,随机,默认为40%~110%
static var refreshCountIncreasePercent: Vector2 = Vector2(0.4, 1.1) # 刷新所需的棒球数量的增加的百分比,随机,默认为40%~110%
static var entityCountBoostPerWave: float = 0.1 # 每波敌人数量增加的百分比,倍数级