1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-06-02 09:21:54 +08:00

feat: 增加Chick角色的远程攻击逻辑,优化攻击方式选择

This commit is contained in:
2025-09-06 18:45:05 +08:00
parent 6b66cef6cb
commit b8027d1c7e
3 changed files with 23 additions and 7 deletions
+11
View File
@@ -8,3 +8,14 @@ static func follow(entity: EntityBase, target: EntityBase, minDistance: float =
entity.move(-delta)
else:
entity.move(delta)
static func distanceAttack(entity: EntityBase, target: EntityBase, minDistance: float, maxDistance: float, index: int = 0):
var distance = (entity.position - target.position).length()
if minDistance <= distance and distance <= maxDistance:
entity.tryAttack(index)
static func distanceAction(entity: EntityBase, target: EntityBase, minDistance: float, maxDistance: float, action: Callable):
var distance = (entity.position - target.position).length()
if minDistance <= distance and distance <= maxDistance:
action.call()
static func weightAttack(entity: EntityBase, indexes: Array[int], weight: Array[int], chargeUp: Callable):
var method = MathTool.randc_from_weights(indexes, weight)
entity.tryAttack(method, chargeUp.call(method))
+6 -7
View File
@@ -18,13 +18,12 @@ func spawn():
func ai():
PresetEntityAI.follow(self, currentFocusedBoss, 0)
if currentFocusedBoss.position.distance_to(position) < 200:
tryAttack(2)
elif currentFocusedBoss.position.distance_to(position) < 700:
tryAttack(1)
else:
var method = MathTool.randc_from([0, 0, 0, 0, 3])
tryAttack(method, method == 3)
PresetEntityAI.distanceAttack(self, currentFocusedBoss, 0, 200, 2)
PresetEntityAI.distanceAttack(self, currentFocusedBoss, 200, 700, 1)
PresetEntityAI.distanceAction(self, currentFocusedBoss, 700, INF,
func():
PresetEntityAI.weightAttack(self, [0, 3], [5, 1], func(index): return index == 3)
)
func attack(type):
if type == 0:
var weaponPos = findWeaponAnchor("normal")