1
1
mirror of https://github.com/Rundll86/Dog-Lynx-And-HCN.git synced 2026-05-28 23:11:54 +08:00
Files
Dog-Lynx-And-HCN/scripts/Contents/AIPresets/Entity.gd
T
fallingshrimp 2232c9148a refactor(MathTool): 重命名随机数相关方法以提高可读性
将 randv2_range 重命名为 randomVector2In,randc_from 重命名为 randomChoiceFrom,randc_from_weights 重命名为 randChoiceWeightsFrom,并新增 randomRingPoint 方法
2025-12-14 15:06:22 +08:00

22 lines
1.1 KiB
GDScript

class_name PresetEntityAI
static func follow(entity: EntityBase, target: EntityBase, minDistance: float = 100):
var delta = target.position - entity.position
var distanceOffset = abs(delta.length() - minDistance)
if distanceOffset > entity.fields[FieldStore.Entity.MOVEMENT_SPEED] * 10:
if delta.length() < minDistance:
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.randChoiceWeightsFrom(indexes, weight)
entity.tryAttack(method, chargeUp.call(method))