mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-05-28 15:01:53 +08:00
refactor(BulletBase/EntityBase): 重构子弹和实体属性系统
将子弹的fields属性拆分为独立的speed、damage和penerate变量 为所有子弹和实体添加register方法用于初始化属性 统一攻击冷却时间管理为attackCooldownMap 移除FieldStore中不再使用的Bullet相关枚举和映射
This commit is contained in:
@@ -1,10 +1,14 @@
|
||||
extends BulletBase
|
||||
class_name BigLaser # 这个子弹是玩家的超级武器,耗能高,dps也高
|
||||
|
||||
func register():
|
||||
speed = 0
|
||||
damage = 35
|
||||
penerate = 1
|
||||
func spawn():
|
||||
CameraManager.shake(5000, 150) # 激光会运行5秒(5000毫秒),期间震屏超高强度
|
||||
CameraManager.playAnimation("bigLaser")
|
||||
fields[FieldStore.Bullet.DAMAGE] *= launcher.fields[FieldStore.Entity.ATTACK_SPEED]
|
||||
damage *= launcher.fields[FieldStore.Entity.ATTACK_SPEED]
|
||||
func ai():
|
||||
rotation = lerp_angle(rotation, ((get_global_mouse_position() - position).angle()), 0.1)
|
||||
position = launcher.texture.global_position
|
||||
|
||||
@@ -3,6 +3,8 @@ class_name Diamond
|
||||
|
||||
const traceTime = 2000
|
||||
|
||||
func register():
|
||||
damage = 2
|
||||
func ai():
|
||||
rotation = lerp_angle(rotation, position.angle_to_point(launcher.currentFocusedBoss.position), 0.1 * clamp((traceTime - timeLived()) / traceTime, 0, INF))
|
||||
canDamageSelf = !(timeLived() >= traceTime)
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
extends BulletBase
|
||||
class_name FireScan
|
||||
|
||||
func _ready():
|
||||
fields[FieldStore.Bullet.SPEED] = 5
|
||||
fields[FieldStore.Bullet.DAMAGE] = 20
|
||||
super._ready()
|
||||
func register():
|
||||
speed = 5
|
||||
damage = 20
|
||||
|
||||
func ai():
|
||||
forward(Vector2.from_angle(rotation))
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
extends BulletBase
|
||||
class_name Pencil
|
||||
|
||||
func register():
|
||||
damage = 20
|
||||
func spawn():
|
||||
await TickTool.millseconds(1000)
|
||||
hitbox.disabled = false
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
extends BulletBase
|
||||
class_name Star
|
||||
|
||||
func register():
|
||||
damage = 1
|
||||
func ai():
|
||||
forward(Vector2.from_angle(rotation))
|
||||
|
||||
@@ -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,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)
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user