本帖最后由 末影矿工 于 2015-7-31 09:09 编辑



我回归了,看着昨天1.9快照发布我就做了一发悬浮装置,原理是1.9的新的药水效果---Levitation失重。
被赋予失重效果的玩家会缓慢上升,可以向四周浮动。药水效果等级越高,升的就越快,结束后pia ji一下掉下来。
但是像其他药水一样,它也有一些特别的等级:
   当玩家Levitation等级为1-127时,玩家的上升速度会随着等级增高,127为最快的速度(火箭)。
   当玩家Levitation等级为128-254时,玩家从255开始往下的重力会增加(就是说上升速度变成了下降速度),128为重力最高,下落的最低速度与最高速度分别小于大于普通玩家下坠速度。
   当玩家Levitation等级为255时,玩家不受重力,升力影响,卡住不动。
   还有就是当玩家的Levitation等级为128-255时受到掉落伤害,会鬼畜的蹭的一下冲上云霄


我们将使用到其中3个等级,2、255、253。所谓悬浮,就是玩家与地面保持一定的距离,在空中漂浮。这个装置的原理就是当玩家靠近地面时,让玩家上升;玩家太高时,让玩家下降;在正确的高度时,让玩家稳定的漂浮。
------------------------------------------------------<分界线>------------------------------------------------------

讲解视频:
http://player.youku.com/player.php/sid/XMTI5NzE0MzIzNg==/v.swf

------------------------------------------------------<分界线>------------------------------------------------------
首先需要4个变量
普通探测位置的Dummy变量
  1. scoreboard objectives add Flow dummy
复制代码

位置1计时器
  1. scoreboard objectives add FlowTimer dummy
复制代码

位置2计时器
  1. scoreboard objectives add Flow2Timer dummy
复制代码

位置3计时器
  1. scoreboard objectives add Flow3Timer dummy
复制代码


之后要准备一个高频,然后连上一下三个指令。

  1. execute @a ~ ~ ~ detect ~ ~-1 ~ minecraft:air 0 scoreboard players set @p Flow 1
复制代码
  1. execute @a ~ ~ ~ detect ~ ~-2 ~ minecraft:air 0 scoreboard players set @p[score_Flow_min=0,score_Flow=0] Flow 1
复制代码
  1. scoreboard players remove @a[score_Flow_min=0] Flow 1
复制代码
从第一个开始讲吧,当玩家脚下的方块没有方块时,把玩家的Flow值设为1。第二个是当玩家脚下没有方块且Flow值为0的时候,设置玩家的Flow值为1,第三个值是只要玩家的Flow大于等于0,就将他的Flow值-1。



处理结果:
当玩家贴近地面时,Flow值为-1
当玩家与地面的距离合适(距离为1)时,Flow值为0
当玩家高于合适距离时,Flow值为0


这样我们就算是判断出玩家与地面的距离关系了,接下来由于药水等级在某些情况下不能直接用effect改变,需要清除效果再进行effect。所以添加以下指令连接到高频。
  1. scoreboard players add @a[score_Flow_min=-1,score_Flow=-1,score_FlowTimer=30] FlowTimer 1
复制代码
  1. scoreboard players add @a[score_Flow_min=0,score_Flow=0,score_Flow2Timer=30] Flow2Timer 1
复制代码
  1. scoreboard players add @a[score_Flow_min=1,score_Flow=1,score_Flow3Timer=30] Flow3Timer 1
复制代码
处理结果:
当玩家Flow值为-1的时候,开启计时器FlowTimer,一直加到31。
当玩家Flow值为0的时候,开启计时器Flow2Timer,一直加到31。
当玩家Flow值为1的时候,开启计时器Flow3Timer,一直加到31。


之后我们还需要6个指令来配合上面的3个指令。
  1. scoreboard players set @a[score_Flow_min=-1,score_Flow=-1] Flow3Timer 0
复制代码
  1. scoreboard players set @a[score_Flow_min=-1,score_Flow=-1] Flow2Timer 0
复制代码
  1. scoreboard players set @a[score_Flow_min=0,score_Flow=0] Flow3Timer 0
复制代码
  1. scoreboard players set @a[score_Flow_min=0,score_Flow=0] FlowTimer 0
复制代码
  1. scoreboard players set @a[score_Flow_min=1,score_Flow=1] Flow2Timer 0
复制代码
  1. scoreboard players set @a[score_Flow_min=1,score_Flow=1] FlowTimer 0
复制代码

将所有的汇总起来,差不多是这个样子的:
处理结果:
当玩家接近地面时,开启玩家的FlowTimer计时器并清空其他计时器,数到31
当玩家与地面距离合适时,开启玩家的Flow2Timer计时器并清空其他计时器,数到31
当玩家过度高于地面时,开启玩家的Flow3Timer计时器并清空其他计时器,数到31


之后我们就开始弄玩家的药水效果了
  1. effect @a[score_Flow3Timer_min=1,score_Flow3Timer=1] minecraft:levitation 0
复制代码
  1. effect @a[score_Flow2Timer_min=1,score_Flow2Timer=1] minecraft:levitation 1 0 true
复制代码
  1. effect @a[score_FlowTimer_min=1,score_FlowTimer=1] minecraft:levitation 0
复制代码
  1. effect @a[score_Flow3Timer_min=2] minecraft:levitation 1 253 true
复制代码
  1. effect @a[score_Flow2Timer_min=2] minecraft:levitation 1 255 true
复制代码
  1. effect @a[score_FlowTimer_min=2] minecraft:levitation 1 2 true
复制代码

处理结果:

玩家接近地面并开启FlowTimer计时器时,计时器数到1时将目前的药水效果清除,然后计时器大于2时并持续给予2级的Levitation药水效果,相当于上升。

玩家上升/下降到适合的与地面的距离并开启Flow2Timer计时器时,计时器数到1时给予玩家1秒的2级Levitation,然后计时器大于2时并持续给予255级的Levitation药水效果,相当于悬浮。

玩家高于地面并开启Flow3Timer计时器时,计时器数到1时将目前的药水效果清除,然后计时器大于2时并持续给予253级的Levitation药水效果,相当于上升。


这样就可以完成了,每次遇到障碍时,玩家就会向上上升,然后上升到一定程度停止上升。当玩家因为某些情况与地面的距离高于限定高度时(例如跳悬崖),就会缓慢下降知道回到正确的与地面的距离。


PS:
还有标题说了“百合子欧米茄”,这是实现的她的悬浮行走的移动方式。在视频中也演示了一下她的攻击方式,都是按原RA3来制作的,攻击方式下次将会讲到。还有视频可能解释的不清楚,如果只是想知道原理的话还是看文字教程为好。

------------------------------------------------------<分界线>------------------------------------------------------
Command Block Logic是2014-2-23刚成立不久的国内主攻研究命令方块的小组。现成员涵盖了现在在MCBBS内研究指令方块的高端玩家和爱好者。

组员作品:
PotatoMaster101:PM的指令方块索引贴
贰逼:贰逼的技巧教程索引贴
songfeitong:Soft的滤器与指令索引贴(其他都是精都不好意思见人了=A=)
ghyzhi10086:87的粘液块作品索引贴
末影矿工:woody的猪飞
sylqiuyifeng:syl的猪爆
卅个屮:Ray5d的超级掘一死战
953301477:⑨的建筑索引贴

Command Block Logic,欢迎各位的加入!
http://www.mcbbs.net/thread-302146-1-1.html
本人优酷:http://i.youku.com/WoodyMo
本人微博:http://weibo.com/WoodyMo
CBL官方微博:http://weibo.com/u/5624468659
>>本人索引贴链接<






[groupid=546]Command Block Logic[/groupid]