你所在位置:手游论坛>迷你世界>玩家交流>正文
1023
29
110
登录可见
1楼
楼主: 发表于 2024-02-09 17:55:47 河南 修改于 2024-02-10 09:03:50 来自 4399游戏盒
举报
各位,本帖教学开始之前,请先听我说:
终于放假辣!哇咔咔咔哈哈哈哈哈哈哈哈哈哈哈哈哈哈好我要被憋死了啊啊啊啊啊啊哈哈哈哈哈哈哈终于!终于放假!我可想死你们辣啊啊啊啊哈哈哈哈哈哈哈(尖叫)哈哈哈哈哈哈哈哈哈哈哈哈哈哈好gjkkddhuxe大和号徐贺。


发电完毕。

这个帖子是一个触发器教学帖,实用性的。
就像题目写的一样。我先解释一下题目是什么意思。
    我们都知道,触发器由“事件”“条件”“动作”三部分组成。其中“条件”是否满足决定了触发器执行与否,同时也决定了该触发器中 所有 “动作”的执行与否。当触发器的条件不满足时,所有动作都不会被执行。
但是在实际的操作中,我们经常需要去细分触发器的每一个动作的执行条件,因而为了达到需要去重新排布更多触发器,让每一个触发器相应的条件来判断相应的动作是否执行,来实现效果。这么做的结果是很麻烦,而且整个触发器的制作思路很杂乱。
我这么说你听不懂,我也快被自己搞晕了
那我们举个简单栗子。比如,我们要实现下面的效果:
“玩家命中生物,当玩家的【等级】大于目标生物的【等级】时,使玩家造成100点伤害;反之,玩家的【等级】小于生物的【等级】时,使玩家造成10点伤害”


如果用正常思路实现这种效果,我们可能会想以下两种方案:
A.分别创建两个触发器,独立执行
(触发器1)当玩家命中生物
i:目标生物的私有变量【等级】 是 <玩家的私有变量【等级】
使玩家对生物造成100伤害
(触发器2)当玩家命中生物
i:目标生物的私有变量【等级】是 > 玩家的私有变量【等级】
   使玩家对生物造成10伤害

B.用一个触发器识别事件,另外两个触发器分别判断该事件中的相符条件,然后选择执行。
(触发器1)当玩家命中生物
i:无
  执行触发器2
  执行触发器3

(触发器2)无事件
i:玩家的【等级】 是 > 目标生物的【等级】
使玩家对生物造成100伤害
(触发器3)无事件
i:玩家的【等级】 是  <  目标生物的【等级】
使玩家对生物造成10伤害

上面的A、B两种方式均可以实现我们想要的效果。
但是这样的实现方式,一定程度上很繁琐。
能不能使触发器简单一些呢?
比如,让一个触发器中的有些动作只在相应的条件下执行,或者让单个动作只执行一部分,再或者让某个动作的执行结果由某些条件决定。这些动作只存在与同一个触发器中。
是的,只用一个触发器。让一个触发器中处在不同“身位”的动作自己去“看”不同条件的“脸色”选择执行于否,而不再只受触发器的条框限制。


↑这就是本帖要说的技术(其实算是技巧,因为本身没什么技术含量)



---------以下为正篇---------
(没错上面全是引子这才是正篇
本帖要介绍的,是利用数值运算,把条件判断嵌套在动作里面的技巧


请各位大佬们倾听
我在此声明,本技巧主要应用于数值类的动作,而并非所有动作。具有局限性。(迷你世界现在已经没有了布尔值转数值的接口)
但是确实实用,能够极大的简化思路和触发器的形式,希望各位大佬别喷!

数值运算实现条件判断
我所提供的核心思路就是用特殊的运算值来实现结果值的分类。


(我们需要用到一个迷你的特性,当数值运算本身是错误运算时,该运算会被视为无效运算,这个运算值对应的动作也不会执行)


这是粘贴,做好的数值判断可以直接用粘贴放在动作的运算中,大家肯定都会用吧。1.用来判断大小的运算max是【最大值】运算,min是【最小值】运算。
x是变量,a代表要与变量相比较的值。
在q1中,
当x小于a时,运算的输出结果是1;
当x大于a时,运算的输出结果是0
(这里的变量和判断值都是正数,如果要比较两个任意符号数的大小,在“x-a”外加上绝对值就行)
写在游戏里面就这个样子:也就是变量大于判断值时,该运算就输出1,反之就输出0。当两者相等时,运算视为无效,动作不会执行。
这可以用来比较大小运算。
把这个运算直接乘到相应动作的数值里面即可。达到的效果就是被嵌套的一部分在满足特定条件时才生效。(因为数值乘1不会造成影响,而数值乘0就是该数值没有效果)

2.判断不等的运算x代表变量,a代表要与变量相比较的值。
ε是一个接近于0的正数,一般固定取10^-6
实际操作中可以根据需要来定它的值。只需要保证它的精确度远远高于x和a,并且接近0就行。
在这个运算中,
当x=a时,x-a=0,自然这个运算的结果是0
当x≠a时,x-a>0但同时x-a>ε,这个运算的结果就会是1
(同样,这里默认x和a的比较不涉及到负数,如果要任意数的话,在所有“x-a”外加上绝对值就行)

3.判断大小,结果相反的运算这个大家应该都见过(某些恶心人的数学题中),但是在这也同样能够应用,发挥出不同的效应(一是为了恶心你,另一是为了简便)
当变量大于所要比较的数时,运算的结果是1;
反之则为-1
当两者相等时,运算为无效运算。把它乘在动作中,动作就不会执行。

4.可操控的分段“L亅”表示的是向下取整,在游戏中对应的是:τ是你想获得的分段长度。
该运算的效果是:
x的数值每扩大(缩小)固定数值τ,就使运算的符号改变
(+1)→(-1)→(+1)…
举一个运算的例子
如果τ=π/2,
f(x)=q3·cos(x)的图像就是下面这样这个运算可以实现不连续的反复分段。
可以用来实现某些带有循环数值的动作,如果这里的变量x是代表时间(t),则可以用高频来实现生物的蛇皮走位。

好了大佬们,现在我们已经了解了几种常用的运算。现在让我来实际举例,让你们了解具体应该咋用?
比如说类似于我们引言中的问题,应该如何解决?
“玩家命中生物,当玩家的【等级】大于目标生物的【等级】时,使玩家造成96点伤害;反之,玩家的【等级】小于生物的【等级】时,使玩家造成10点伤害;当玩家的【等级】等于生物【等级】时,使玩家造成87点伤害”


我们就可以这样写了:记【玩家等级】为Vx,生物等级为Va你可能会说:“啊叭叭叭叭,这样嵌套它也妹方便到哪去啊,而且很容易看花眼吧!”
的确,这种写法在需要判断的分条件少的时候不大方便。但是多了可能就方便一些,比如看下面的例子

在【探险等级】为5/15/25/35/45/50时,世界BOSS{狗子}的血量分别为1000/2640/7000/32000/70000/12w


仅在【探险等级】为50时,狗子拥有【免疫远程伤害】的buff加成;仅在【探险等级】小于10时,狗子无法移动。”

解决这个问题就显然方便多了。
---当然,数字运算的嵌套是有上限的,好像最多就50层,所以我们还需要用到【赋值功能】,也就是存个数值,然后接着算
(迷你世界中布尔值不是数值,其有true/false两种值。可以单独做触发器,把某个布尔值转成数值。)(添加某一个状态,持续时间为0秒状态就会瞬间消失,相当于没有添加;移动速度为0就无法移动)


可能又有的人要叭叭了:“啊这这,我还是认为你这技巧很废,你不是列举了四个运算吗?你现在顶多不也就了前两个,还有两个呢”
确实,后面的一般用不到
但确实可以用到,后两条的例子很难举,我一时也想不起来。

以上是列举的四种运算,当然还可以有更多,本帖的教学目的并不是这四个运算。
而是提供一种思路,即利用特殊的数值运算,实现把分条件写进动作的效果。



事实上,截止目前为止,这个技巧“就业率”其实挺高的,因为大部分动作都是带有数值项的,而这些绝大部分的动作的数值项为0时,该动作都是失效的。
但是仍然要注意一些特殊情况,【特效组】中编号为0的特效是一个正确的引用。因为组中的子集编号是从0开始的
有一些动作中引用数值但是却不能引用运算,有一些动作只能引用短运算。这个时候如果还要使用技巧,就需要单独进行赋值,然后再在动作中引用



各位大佬们,如果你们真的能够看懂我这个全是鸟语的帖子到底讲了什么,大佬们也一定会明白,存在无数种运算可以实现不同的效果。
但是各位大佬们,如果你们想要自己创建一种新的运算效果的话,要注意下面的规则:

1.嵌套尽量少,因为嵌套越多触发器越累赘。
2.注意运算的{定义域},有时在整个动作中,某一个运算的无效,会导致整个动作都无效
3.实际游戏中【变量】和【判断值】很少有负数与多分位小数
4.尽量方便操作(方便复制粘贴),方便看懂


谢谢各位,以上就是帖子的全部内容了!
后面可能会考虑单独出一个应用帖,看看反馈如何吧
其实本帖是往日の残骸的后续


谢谢๑•₃•๑!欢迎大佬留下评论,但是请不要无脑喷谢谢。这个技巧是我自己想的,有不足之处我会虚心接受的。我更希望这个技巧公之于众,能够造福大家,被更多的人投入应用,使触发器变得简洁许多











留个课后作业,试试用帖子中的方法实现下面的效果:
生物的【防御力】大于玩家的【攻击力】时,使玩家造成0.5×(防御力-攻击力)点伤害;
生物的【防御力】小于玩家的【攻击力】时
使玩家造成1.25(攻击力-防御力)点伤害【触发器教学】利用运算来实现功能原理其实本帖是往日の残骸的后继
点赞
------------ 29人已赞 ------------