概览
minecraft:projectile 是一个实体组件:写在自定义生物的 components 对象中,或其中某个组件组里。 让实体表现得像被投掷或发射出去的物体,比如箭或雪球:它会沿弧线飞行,命中时产生效果。用 on_hit 设置选择命中时发生什么。
字段
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
offset | vec3 | [0,0,0] | 弹射物出现的位置,从发射者身上的锚点开始计算。 |
anchor | ProjectileAnchor | "origin" | 从发射者身上的哪个点发射:0 脚部,1 眼睛,2 身体中部。 |
power | number | 1.3 | 弹射物离开发射者时的速度,单位为方块/刻。 |
angle_offset | number | 0 | 瞄准时额外向上倾斜的角度(度);负数则向下。 |
uncertainty_base | number | 0 | 射击的不准确程度;数值越大,散布越大。 |
uncertainty_multiplier | number | 0 | 每提高一级难度不准确度降低多少,难度越高射得越准。 |
shoot_target | boolean | true | 为 true 时,瞄准发射者的目标而不是正前方。 |
gravity | number | 0.05 | 弹射物每刻下坠的速度;设为 0 则直线飞行。 |
inertia | number | 0.99 | 在空中每刻保留多少速度;小于 1 会逐渐减速。 |
liquid_inertia | number | 0.6 | 在水或岩浆中移动时每刻保留多少速度。 |
isolated_physics | boolean | true | 为 true 时,使用自己的简单飞行物理,忽略常规摩擦和阻力。很适合自定义弹射物。 |
homing | boolean | false | 为 true 时,弹射物飞行中会转向目标。 |
should_bounce | ShouldBounce | "no" | 何时从实体身上弹开:从不、只从无敌实体身上,或只要没有造成伤害就弹开。 |
multiple_targets | boolean | false | 为 true 时,可以穿透并命中多个实体,就像穿透箭一样。 |
hit_nearest_passenger | boolean | false | 为 true 时,命中有人骑乘的载具会影响最近的骑乘者,而不是载具本身。 |
ignored_entities | Entity Reference[] | 无 | 弹射物会直接穿过、不会命中的实体类型。 |
is_dangerous | boolean | false | 为 true 时,生物会把弹射物视为威胁并可能做出反应。 |
reflect_on_hurt | boolean | false | 为 true 时,击打弹射物会把它反弹回攻击者,就像恶魂的火球。 |
reflect_immunity | number | 0 | 发射后多少秒内弹射物无法被打回。 |
destroy_on_hurt | boolean | false | 为 true 时,弹射物被击中时会被移除。 |
stop_on_hurt | boolean | false | 为 true 时,弹射物被击中时停止移动。 |
crit_particle_on_hurt | boolean | false | 为 true 时,弹射物被击中时出现暴击闪光。 |
particle | ParticleType | "iconcrack" | 弹射物命中处显示的粒子。 |
shoot_sound | string | "" | 发射弹射物时播放的声音。 |
hit_sound | string | "" | 命中实体时播放的声音;如果没有设置命中地面的声音,命中方块时也用它。 |
hit_ground_sound | string | "" | 命中方块时播放的声音。 |
catch_fire | boolean | false | 让目标着火的旧方法;建议改用 on_hit 中的 catch_fire 选项。 |
on_fire_time | number | 5 | 被这个弹射物点燃的目标会燃烧多少秒。 |
lightning | boolean | false | 为 true 时,雷暴天气下可以在命中的实体上召唤闪电,就像带引雷魔咒的三叉戟。 |
potion_effect | integer | -1 | 弹射物携带的药水类型,通常由药水物品自动填写。 |
splash_range | number | 4 | 喷溅药水效果的半径(以方块计)。 |
on_hit | OnHitCommandsStorage | 无 | 命中时发生什么,比如造成伤害、生成实体或移除弹射物。 |
hit_water | boolean | false | 为 true 时,弹射物碰到水就会停下。 |
示例
写在 BP/entities/<name>.json 的 components 对象中(值为默认值或占位值):
BP/entities/<name>.json
{
"minecraft:projectile": {
"offset": [
0,
0,
0
],
"anchor": "origin",
"power": 1.3,
"angle_offset": 0,
"uncertainty_base": 0,
"uncertainty_multiplier": 0,
"shoot_target": true,
"gravity": 0.05
}
}