版本:1.12.2或1.14.4
如题
在玩家处生成火焰弹(fireball),并沿着玩家朝向的方向直线飞行
碰到实体或者方块爆炸
如题
在玩家处生成火焰弹(fireball),并沿着玩家朝向的方向直线飞行
碰到实体或者方块爆炸
可以用雪球吗?
1.12.2execute @e[type=snowball] ~ ~ ~ summon fireball ~ ~ ~ {direction:[0.0,0.0,0.0]}朝雪球方向生成火球
1.12.2execute @e[type=snowball] ~ ~ ~ summon fireball ~ ~ ~ {direction:[0.0,0.0,0.0]}朝雪球方向生成火球
本帖最后由 Chelove_C60 于 2020-1-9 16:57 编辑
你是说火焰弹(small_fireball)还是说恶魂火球(fireball)
1.12需要穷举,或者如果是火球的话,可以像楼上那样用雪球
1.14有两种方法,一种是计分板配合marker计算direction和power的值,然后配合execute store保存;另一种方案是借助0,0,0点利用局部坐标做替换(偷懒做法)
这里我就偷个懒吧,因为要复习,时间不多
首先给需要发射火球(或火焰弹)的玩家加标签(此处假设标签为fireball),然后循环
execute as @a[tag=fireball] at @s run function fun
fun.mcfunction
复制代码
如果要求是火焰弹(small_fireball)的话,还需要一个marker时刻跟着火焰弹,然后检测到火焰弹消失后,生成一个瞬间爆炸的苦力怕或tnt即可
补充:如果要用这种方法,记得把0,0点附近的4个区块设为强制加载区块
你是说火焰弹(small_fireball)还是说恶魂火球(fireball)
1.12需要穷举,或者如果是火球的话,可以像楼上那样用雪球
1.14有两种方法,一种是计分板配合marker计算direction和power的值,然后配合execute store保存;另一种方案是借助0,0,0点利用局部坐标做替换(偷懒做法)
首先给需要发射火球(或火焰弹)的玩家加标签(此处假设标签为fireball),然后循环
execute as @a[tag=fireball] at @s run function fun
fun.mcfunction
- tag @s add summoning
- execute anchored eyes run summon fireball ^ ^ ^ {direction:[0d,0d,0d],Tags:["mark"]}
- summon armor_stand ~ ~ ~ {Tags:["mark"]}
- execute as @e[type=armor_stand,tag=mark] rotated as @a[tag=summoning] run tp 0.0 0.0 0.0
- execute as @e[type=armor_stand,tag=mark] at @s run tp ^ ^ ^0.1
- data modify entity @e[type=fireball,tag=mark,limit=1] power set from entity @e[type=armor_stand,limit=1,tag=mark] Pos
- execute as @e[type=armor_stand,tag=mark] at @s run tp ^ ^ ^1.5
- data modify entity @e[type=fireball,tag=mark,limit=1] direction set from entity @e[type=armor_stand,limit=1,tag=mark] Pos
- kill @e[type=armor_stand,tag=mark]
- tag @e[type=fireball,tag=mark] remove mark
- tag @s remove summoning
如果要求是火焰弹(small_fireball)的话,还需要一个marker时刻跟着火焰弹,然后检测到火焰弹消失后,生成一个瞬间爆炸的苦力怕或tnt即可
补充:如果要用这种方法,记得把0,0点附近的4个区块设为强制加载区块
Chelove_C60 发表于 2020-1-8 16:47
你是说火焰弹(small_fireball)还是说恶魂火球(fireball)
1.12需要穷举,或者如果是火球的话,可以像楼 ...
第四条指令是什么意思
t1546542 发表于 2020-1-9 16:44
第四条指令是什么意思
execute as @e[type=armor_stand,tag=mark] rotated as @a[tag=summoning] run tp 0.0 0.0 0.0
这一条?
就是将盔甲架的朝向调整与玩家朝向相同,同时传送至0.0 0.0 0.0坐标
Chelove_C60 发表于 2020-1-9 16:53
这一条?
就是将盔甲架的朝向调整与玩家朝向相同,同时传送至0.0 0.0 0.0坐标 ...
execute as @e[type=armor_stand,tag=mark] rotated
t1546542 发表于 2020-1-9 16:56
execute as @e[type=armor_stand,tag=mark] rotated
调整朝向
... rotated as <实体> ...
会将当前命令执行的朝向调整为指定实体的朝向。这里就是调整盔甲架的命令的执行朝向为玩家朝向,具体效果在tp后才会看到
Chelove_C60 发表于 2020-1-8 16:47
你是说火焰弹(small_fireball)还是说恶魂火球(fireball)
1.12需要穷举,或者如果是火球的话,可以像楼 ...
为什么要tp到0 0 0
还要tp到 ~ ~ ~0.1才能data记录
本帖最后由 Chelove_C60 于 2020-1-9 17:17 编辑
这里用了个偷懒的做法,因为常规要做的话,需要通过计分板依据坐标差计算出火球或火焰弹的direction和power,然后借助execute store储存进去。稍麻烦。
然后我就想到了利用实体的坐标标签Pos,配合局部坐标可以直接得到结果(是局部坐标^,不是相对坐标~)。这样就可以免去复杂的计分板计算。
我估算了一下,power的模大概是0.1左右,这是向前tp 0.1格的原因。direction的模大概是1.6,因此后面在0.1的基础上又tp了1.5格。这样得到的Pos就会是想要的power和direction值。
总体思路差不多就是把要得出的结果通过Pos这个关于实体坐标的nbt输出,然后获取保存到其他地方。这里所有的tp都是为了修改Pos这个标签
t1546542 发表于 2020-1-9 17:02
为什么要tp到0 0 0
还要tp到 ~ ~ ~0.1才能data记录
这里用了个偷懒的做法,因为常规要做的话,需要通过计分板依据坐标差计算出火球或火焰弹的direction和power,然后借助execute store储存进去。稍麻烦。
然后我就想到了利用实体的坐标标签Pos,配合局部坐标可以直接得到结果(是局部坐标^,不是相对坐标~)。这样就可以免去复杂的计分板计算。
我估算了一下,power的模大概是0.1左右,这是向前tp 0.1格的原因。direction的模大概是1.6,因此后面在0.1的基础上又tp了1.5格。这样得到的Pos就会是想要的power和direction值。
总体思路差不多就是把要得出的结果通过Pos这个关于实体坐标的nbt输出,然后获取保存到其他地方。这里所有的tp都是为了修改Pos这个标签
Chelove_C60 发表于 2020-1-9 17:14
这里用了个偷懒的做法,因为常规要做的话,需要通过计分板依据坐标差计算出火球或火焰弹的direction和pow ...
em
为什么不直接让火焰弹的direction和power=盔甲架的direction和power(或者直接等于玩家的?)
直接原地进行
t1546542 发表于 2020-1-9 17:18
em
为什么不直接让火焰弹的direction和power=盔甲架的direction和power(或者直接等于玩家的?)
直接原地 ...
diredtion和power是火球和火焰弹独有的nbt
本帖最后由 Chelove_C60 于 2020-1-9 17:36 编辑
火球的运动方向不由朝向决定,只由direction和power决定,所以改火球的朝向没用
好吧,严格来讲任何实体的运动方向都不由朝向决定,改朝向只会影响局部坐标
t1546542 发表于 2020-1-9 17:28
让火焰弹的朝向用rotated as等于玩家的
行吗
火球的运动方向不由朝向决定,只由direction和power决定,所以改火球的朝向没用
好吧,严格来讲任何实体的运动方向都不由朝向决定,改朝向只会影响局部坐标
Chelove_C60 发表于 2020-1-9 17:34
火球的运动方向不由朝向决定,只由direction和power决定,所以改火球的朝向没用
好吧,严格来讲任何实体 ...
大概知道了
那如果我只改火球的power,不改direction会怎么样
t1546542 发表于 2020-1-9 18:00
大概知道了
那如果我只改火球的power,不改direction会怎么样
从静止开始加速运动
如果只改direction,那就会慢慢减速直到停止
Chelove_C60 发表于 2020-1-9 17:14
这里用了个偷懒的做法,因为常规要做的话,需要通过计分板依据坐标差计算出火球或火焰弹的direction和pow ...
怎么估算
t1546542 发表于 2020-1-9 20:17
怎么估算
就是正常生成一个火球,然后打一下,这一瞬间获取其nbt,看它的direction和power,然后计算器勾股定理算一下,看数值大概是多少