概览
minecraft:behavior.ranged_attack 是一个实体组件:写在自定义生物的 components 对象中,或其中某个组件组里。 让生物通过发射弹射物进行远程攻击,就像骷髅或烈焰人。弹射物本身用 minecraft:shooter 设置。把 charge_shoot_trigger 设为大于 0 可以启用蓄力连射。
字段
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
burst_shots | integer | 1 | 一次蓄力连射发射多少发。 |
target_in_sight_time | number | 1 | 生物必须看见目标多少秒才会朝它移动。 |
burst_interval | number | 0 | 连射中每发之间的秒数。 |
charge_charged_trigger | number | 0 | 在 charge_shoot_trigger 基础上额外增加的秒数,之后蓄力才算完成。目标离开视线时蓄力会下降。 |
charge_shoot_trigger | number | 0 | 生物发射连射前蓄力的时长(游戏中这个值会翻倍)。设为大于 0 可启用蓄力连射。 |
attack_interval | FloatRange | {"max":-1,"min":-1} | 普通射击之间的随机装填时间(秒)。离目标越远时间越长。 |
attack_range | FloatRange | {"max":0,"min":0} | 只有目标位于这两个距离之间时,生物才会射击。 |
x_max_rotation | number | 30 | 生物瞄准时最多能上下仰俯的角度(度)。范围:0 到 … |
y_max_head_rotation | number | 30 | 生物瞄准时头部最多能左右转动的角度(度)。范围:0 到 … |
ranged_fov | number | 90 | 用于发现射击目标的视野角度(度)。范围:0 到 … |
speed_multiplier | number | 1 | 攻击期间朝目标移动时的速度倍率。 |
set_persistent | boolean | false | 设为 true 时,生物锁定玩家后就不会消失。 |
swing | boolean | false | 设为 true 且生物有挥手动画时,每次射击都会挥动手臂。 |
in_range_movement_mode | RangedAttackGoalDefinition::InRangeMovementMode | "hold_position" | 目标在射程内时生物如何移动:"hold_position" 原地站着射击,"follow_target" 会继续靠近,直到最小射程。 |
priority | integer | 0 | 多个目标同时想运行时决定谁优先:数字越小越先运行。范围:0 到 … |
control_flags | Goal's control flags[] | 无 | 列出这个目标要控制的身体部分(比如移动、看向或跳跃),这样需要同一部分的目标就不会同时运行。 |
示例
写在 BP/entities/<name>.json 的 components 对象中(值为默认值或占位值):
BP/entities/<name>.json
{
"minecraft:behavior.ranged_attack": {
"burst_shots": 1,
"target_in_sight_time": 1,
"burst_interval": 0,
"charge_charged_trigger": 0,
"charge_shoot_trigger": 0,
"attack_interval": {
"max": -1,
"min": -1
},
"attack_range": {
"max": 0,
"min": 0
},
"x_max_rotation": 30
}
}