1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-29 23:41:54 +08:00

refactor(BulletBase/EntityBase): 重构子弹和实体属性系统

将子弹的fields属性拆分为独立的speed、damage和penerate变量
为所有子弹和实体添加register方法用于初始化属性
统一攻击冷却时间管理为attackCooldownMap
移除FieldStore中不再使用的Bullet相关枚举和映射
This commit is contained in:
2025-08-29 10:50:22 +08:00
parent cf8368a946
commit 171dbb1131
14 changed files with 56 additions and 71 deletions
-15
View File
@@ -1,17 +1,2 @@
extends EntityBase
class_name Bear
func ai():
pass
func attack(type):
if type == 0:
var weaponPos = findWeaponAnchor("normal")
return BulletBase.generate(preload("res://components/Bullets/PurpleCrystal.tscn"), self, weaponPos, (get_global_mouse_position() - weaponPos).angle())
func sprint():
move(Vector2(
Input.get_axis("m_left", "m_right"),
Input.get_axis("m_up", "m_down")
) * sprintMultiplier, true)
func heal(count: float):
health += count
DamageLabel.create(-count, false, damageAnchor.global_position + MathTool.randv2_range(GameRule.damageLabelSpawnOffset))
+5 -3
View File
@@ -5,10 +5,12 @@ class_name Chick
const laserCount = 4
func _ready():
func register():
fields[FieldStore.Entity.MAX_HEALTH] = 2000
fields[FieldStore.Entity.MOVEMENT_SPEED] = 0.1
super._ready()
fields[FieldStore.Entity.MOVEMENT_SPEED] = 0.35
attackCooldownMap[0] = 2000
attackCooldownMap[1] = 3000
attackCooldownMap[2] = 100
func ai():
move(currentFocusedBoss.position - position)
+3 -4
View File
@@ -1,14 +1,13 @@
extends EntityBase
class_name Hen
func _ready():
func register():
fields[FieldStore.Entity.MAX_HEALTH] = 75
fields[FieldStore.Entity.MOVEMENT_SPEED] = 0.25
fields[FieldStore.Entity.MOVEMENT_SPEED] = 0.15
fields[FieldStore.Entity.OFFSET_SHOOT] = 10
super._ready()
func ai():
cooldownUnit = randi_range(1500, 4000)
attackCooldownMap[0] = randi_range(1500, 4000)
move(currentFocusedBoss.position - position)
tryAttack(0)
func attack(type):
+3 -2
View File
@@ -1,6 +1,9 @@
extends EntityBase
class_name Rooster
func register():
attackCooldownMap[0] = 200
attackCooldownMap[1] = 6000
func ai():
texture.play("walk")
var direction = Vector2(
@@ -11,10 +14,8 @@ func ai():
if direction.length() == 0:
texture.play("idle")
if Input.is_action_pressed("attack"):
cooldownUnit = 200
tryAttack(0)
elif Input.is_action_pressed("attack2"):
cooldownUnit = 6000
tryAttack(1)
if Input.is_action_just_pressed("sprint"):
trySprint()