不动要塞
本帖最后由 不动要塞 于 2017-12-31 16:44 编辑

拐弯火球镇楼

前段时间做rpg发现,召唤火球存在两个量,而且都是控制方向的,那么这有什么意义呢


1:首先是最初的命令——————————————

  1. summon FireBall ~ ~2 ~ {ExplosionPower:1,direction:[0.0d,0.0d,0.0d],power:[0.0d,0.0d,0.0d]}
复制代码

  这是在上方召唤一个火球

但是火球却停在了那,不会动,除非你左键打一下才会给予一个方向的力量

2:这就需要给予一个方向了——————————

  1. /summon FireBall ~ ~3 ~ {ExplosionPower:1,direction:[3.0d,0.0d,0.0d],power:[0.0d,0.0d,0.0d]}
复制代码


这下火球确实朝着方向飞起来了,但是仔细观察,火球在远处缓慢的停了下来,甚至撞在了一起

这就到了第三节

3:数据标签分析————————

  在命令中:summon FireBall ~ ~2 ~ {ExplosionPower:1,direction:[0.0d,0.0d,0.0d],power:[0.0d,0.0d,0.0d]}

在这里,红色的的direction代表初始速度,会衰减

             蓝色的power是匀速的,不会衰减

当初速度大于匀速的,会以初速度方向飞行,否则向匀速度方向飞行

至此,可以使用

  1. /summon FireBall ~ ~3 ~ {ExplosionPower:1,direction:[3.0d,0.0d,0.0d],power:[0.0d,0.0d,0.5d]}
复制代码

实现拐弯的火球

或者

  1. /summon FireBall ~ ~3 ~ {ExplosionPower:1,direction:[3.0d,0.0d,0.0d],power:[-0.3d,0.1d,0.0d]}
复制代码

至此关于火球发射向量研究完毕

4:其他

①使用计分板穷举,自由发射火球吧

  1. #scoreboard objectives add dir dummy 方向判断

  2. scoreboard players set @a[rym=-22,ry=22] dir 0
  3. scoreboard players set @a[rym=22,ry=67] dir 1
  4. scoreboard players set @a[rym=67,ry=112] dir 2
  5. scoreboard players set @a[rym=112,ry=157] dir 3
  6. scoreboard players set @a[rym=157,ry=-157] dir 4
  7. scoreboard players set @a[rym=-157,ry=-112] dir 5
  8. scoreboard players set @a[rym=-112,ry=-67] dir 6
  9. scoreboard players set @a[rym=-67,ry=-22] dir 7
复制代码

②一个指令,模拟旋转木马(猪)

  1. /summon FireBall ~ ~3 ~ {ExplosionPower:1,direction:[3.0d,0.0d,0.0d],power:[0.0d,0.0d,0.5d]}
复制代码
http://www.mcbbs.net/thread-773215-1-1.html

最后

感谢观看






乙烯_中国
本版禁用回复可见,请楼主自行编辑去除。

Duxtr
个人感觉还是蛮有用的啊,在做图内特效有很好的表现力

wzz0116
怎么觉得你把问答版回答的问题发到这里来了

Moledy
6666666666666666666666666

pca006132
详细点的研究数据吧...
power其实是加速度,每tick在direction上加多少
而direction递减是每tick -5%

每gt火球会进行这样的更新:(伪代码)
position += direction //先进行position的更新
direction = (direction + power)*0.95

如果是被实体攻击/发射的话,那就会设置:
power = direction * 0.1
所以其实也不是不会进行加速的...虽然会到极限就是了

ruhuasiyu
pca006132 发表于 2017-12-31 20:18
详细点的研究数据吧...
power其实是加速度,每tick在direction上加多少
而direction递减是每tick -5%

这就很有意思的,由于0.05足够小,最后得到的位置可以近似看成包含时间的某个指数函数

Deing
这个火球的特性,其实很惭愧地说一下,我当初是挺研究过一阵儿的,起因是http://www.mcbbs.net/forum.php?m ... 565887&pid=10002054,看到这篇帖子关于画曲线的研究之后,我就想到可以用entitydata改火球的速度来用火球画曲线,然而…………如你所见这是16年3月的事。。开坑太多填不掉啊,尤其后来看到http://www.mcbbs.net/thread-620979-1-1.html这篇帖子,以及再后来用一堆骑乘的船画曲线的方法,我就更加没有动力了。。。

而且火球这个方法吧,弊端其实非常明显,就是motion值是不可探测或修改并且不可能精确的。我做过不少实验,发现最后稳定飞行(即power值一定)的火球motion值其实一直在变(只是变化很小)而且规律难测,使用时远不如tp方法画出的曲线更精准;并且,所有的direction和power的数值必须亲自测定再手动输入,不能像坐标那样通过一些叠加什么的直接交给mc来运算,这样要做一个大的曲线工程就要手测许多数值并全部输入到指令里,还是非常麻烦的。(唉,也许我就是太怕麻烦了……)
(根据六楼pca dalao的话来看,这个方法确实太过复杂,不过……似乎还是可以有些用途的?)

今天看到你的帖子,不禁感到很惭愧啊,当初研究了挺久的东西就那样抛下了,,然后因为又各种事情以及各种懒癌就没再捡起来(现在依然忙啊,,而且都1.13了估计是再也不会填坑了;更别说我已经好久不玩命令了现在一直在搞1.10.2+的mod),这个火球虽然在画精确曲线上不是很行,但是如果你愿意,也许你能继续研究研究并发现一些好的应用呢。


最后发几张当初我实验时候的图缅怀一下









ruhuasiyu
本帖最后由 ruhuasiyu 于 2017-12-31 23:19 编辑
Deing 发表于 2017-12-31 23:01
这个火球的特性,其实很惭愧地说一下,我当初是挺研究过一阵儿的,起因是http://www.mcbbs.net/forum.php?m ...

现在在1.13修改direction和power还是很简单的……
如果没有衰减的话,的确就是一条抛物线(二次贝塞尔曲线)

m050131
那岂不是可以用骑着火球的矿车做过山车[手动滑稽]

bangki
幸苦了,大大

348602348
wc竟然还可以这样玩

13665374636
赞一个_(:з」∠)_

Ice_Cloud
power这个标签应该是加速度而不是匀速吧

WJ200009288
MCBBS有你更精彩~

作者是谁
MCBBS有你更精彩

作者是谁
不行,骑着火球的矿车在召唤出来的一瞬间就炸了,无论任何实体与火球接触都会爆炸,有大佬能解决下吗,这创意还不错

第一页 上一页 下一页 最后一页