【
前言】
这个玩意研究了一下,是一个相对会涉及一些物理公式的教学。后期推导公式在视频中就不教学了。会在图文展示,同时会教大家根据公式来改变参量,进而改变迫击炮攻击范围和冷却时间。如果你不想去修改的话,照抄此贴的触发器成品图也可以。【
思路展示】
因为我们要做抛物线,所以我们需要了解一下地图的重力,还有投掷物的物理属性。
设投掷物基础速度为V,则水平速度为vcosα,竖直速度为vsinα。(其中α是投掷物发射方向与水平面夹角)
我们需要根据两个玩家之间的距离推断投掷物发射的角度,然后列一个函数关系式。
玩家之间的距离设为S,则S=vcosα*2t
又因为vsinα=gt(第一次竖直速度为零,也就是抛物线达到最高点的时候。)因此t=vsinα/g(其中g是重力加速度,迷你世界默认计算取值的时候是10)。
所以整个抛物线运动时间是2t,水平位移是S,将上面两个方程式合并得
S=(2vcosα*vsinα)/g
根据倍角公式得
S=v²sin2α/g
这样我们就求出关于水平位移和发射角度的函数关系式。所以S最大值是v²/g这个也就是我们的迫击炮攻击范围。当初始速度为10攻击范围就是10,当初始速度是20,攻击范围就是40。以此类推
【
投掷物设置】
因为我们用到物理公式,所以我们需要把投掷物物理属性进行一下修改。
这里面我选择球类进行修改。因为迷你世界的球本身就带物理属性,小伙伴可以直接下载微缩模型修改这个排球外观和名字就可以了。

首先我们需要设置这个投掷物初始速度这里我设置的是200,但是在公式里面这个V代表速度20。因为这个速度它没加单位。我也是通过计算得到的,所以投掷物的速度除以10才是我们公式里面要的速度参量。
将目标类型调成生物和方块。

最后就是设置这个高级物理,我们需要把所有阻力都调成零。因为我懒得去通过数据去计算迷你世界里面的阻力和角阻力。我们用的公式也是理想条件下的,所以把阻力都关上。质量不用管,你调成多少对结果都不会有影响。将受重力影响打开。

然后我们需要做一个道具迫击炮,负责触发事件,外观可以下载微缩模型。不过我懒就找道具库里面一个像迫击炮的的道具代替了。
改好外观后,直接进入技能界面,挑一个技能,因为使用技能可以触发事件。因为我们触发器的迫击炮运算过程需要1.5秒,所以这里面技能冷却可以设置成1.5秒。同时蓄力方式改成不需蓄力。

【触发器教学】有了理论基础,接下来就是把公式实装进入触发器运算看看。
触发器组1触发器1
事件:游戏每运行0.01秒
条件:判断数值1是否大于180
(满足条件)
动作1:改变数值1为90
(不满足条件)
动作2:设置数值1为数值1加2。
动作3:对所有玩家执行触发器2,检查条件为真。
动作4:赋值,设置数值2为位置1与房主的距离*当前重力/速度的平方。(这里面我们投掷物的投掷速度是200,在公式里面是用20来运算的。)
动作5:赋值,设置数值3为房主与位置1的距离。
解析:因为这里面我是单人测试的,所以拿迫击炮的就是房主自己。在玩法模式里面,如果迫击炮只能是房主拿的话,可以按照上图设置,如果是其他玩家也可以使用的话,还需要设置私有变量进行赋值。
触发器2
事件:
条件1:如果sin数值1的值乘100小于四舍五入数值2乘1000+5
条件2:如果sin数值1的值乘100大于四舍五入数值2乘1000-5
条件3:触发事件的玩家手持道具是迫击炮
动作1:使房主发射投掷物,方向(位置到位置偏移后的位置)(第二个位置偏移数值是z轴偏移数值等于tan数值1/2*数值3)
动作2:对玩家显示飘窗文字开炮。
解析:这个就是通过触发器1用快速取值的方式找到一个和我们需要的数值相近的一个值代替,这个代替的数值肯定有误差,可以看到我用条件一和条件二把误差控制在小数点千分之一位。虽然有误差但因为迫击炮是范围攻击所以可以忽略这个误差。根据计算的数值用函数tan计算发射角度,从而实现精准的命中率。

触发器3
事件:当生物进入区域1
条件:无
动作1:设置位置1为事件中的位置
动作2:在位置1播放特效提示17大小为5(通常这个大小就是迫击炮攻击命中的范围)
动作3:等待三秒
动作4:删除事件中位置上的特效提示17

触发器4
事件:游戏每运行一秒
条件:无
动作1:设置区域1为房主位置为中心20*20*20的范围
动作2:等待0.1秒
动作3:设置区域1为房主位置为中心0*0*0的范围

触发器5
事件:投掷物击中
条件:玩家手持道具为迫击炮
(条件不满足)
动作1:设置区域2为事件中的位置5*5*5的范围
动作2:使房主对区域2所以目标造成100窒息伤害
动作3:在事件中的位置创建特效爆炸27大小为3
触发器6
事件:游戏创建
条件:无
动作:设置房主免疫窒息伤害。
解析:通过上面的两个触发器可以实现炮弹落地造成范围伤害,同时发射迫击炮的玩家会免疫自己发射炮弹受到的伤害。所以局限性出来了,这个东西好像只能一队能用,不然两队都免疫的话就没法打了。不过用在打怪地图还是可以的。不适合多人对战。
触发器组2触发器1
事件:当玩家使用道具
条件:如果玩家手持道具类型是迫击炮
动作:改变触发器组1的状态为开
触发器2
事件:当投掷物被创建
条件:无
动作1:等待一秒
动作2:改变触发器组1的状态为关
解析:通过两个触发器组可以实现用某种道具来触发迫击炮效果。所以我把最后一个触发器又做了一组。

【
作者总结】
这一期可能有点小难。如果看不太明白可以在评论区下面提出来。我会对各位不明白的地方再做解述。
这里分享几个小窍门
窍门1首先迷你世界里面的四舍五入只能取整数值。如果我们要取小数点后两位我们可以通过以下方式实现。这里面我们设置数值1为根号二吧(一个不循环的数,小数点后面有无限位。)我们通过乘100来扩大这个数值1,然后对这个扩大后的数值1进行四舍五入。之后再让这个数值除100,你就得到一个保留小数点后两位的数值。小数点保留后N位的可以以此类推。
窍门2因为本来我想直接赋值sinα,但是赋值的前后数值可选的还不一样。从下图可以看到,第一个可以选择的很少,但是第二个可以选择的很多。如果第一个可以选择三角函数的话,我们这一期就没必要兜兜绕绕了。
接下来就是教大家通过高速运算来取自己想要的值


首先我们需要两个触发器,第一个触发器是使我们需要的数值按一定规律运算,每秒运算次数可以通过事件游戏每运行多少秒,和控制里面的重复执行进行高速运算。
然后再第二个触发器添加一个条件,运算的数值等于我们需要的值时才触发。如果这两个值很接近但是不相等。

然后我们可以通过窍门1中说的进行数值比较。令运算的数值大于我们需要的数值减去一个数。令运算的数值小于我们需要的数值加上一个数,从而形成一个区间。如果运算数值在这个区间内便可以执行动作。

【
视频展示】