欢迎光临散文网 会员登陆 & 注册

ff14高级触发器不正经教程(5)-原来你在我身后~触发器方位角、距离变量的实际运用

2023-02-25 15:33 作者:纤凌依  | 我要投稿

前言

这次的教程请大家量力而行,不保证能教会大家。触发器运行效果还算不错,但以下教程文字部分可能有错误或不严谨的地方,还望帮助指正。

高级触发器官方FAQ文档:

https://github.com/paissaheavyindustries/Triggernometry/wiki/Triggernometry-FAQ-and-examples

我们主要用到的工具为下方的几个

以及空间向量夹角公式(平面空间版本):

cos%CE%B8%3D%5Cfrac%7B%5Cvec%7Ba%7D%5Ccdot%5Cvec%7Bb%7D%7D%7B%7C%5Cvec%7Ba%7D%7C%7C%5Cvec%7Bb%7D%7C%7D%3D%5Cfrac%7Ba_%7Bx%7Db_%7Bx%7D%2Ba_%7By%7Db_%7By%7D%7D%7B%5Csqrt%7Ba_%7Bx%7D%5E2%2Ba_%7By%7D%5E2%7D%5Csqrt%7Bb_%7Bx%7D%5E2%2Bb_%7By%7D%5E2%7D%7D

b站表达式代码:cosθ=\frac{\vec{a}\cdot\vec{b}}{|\vec{a}||\vec{b}|}=\frac{a_{x}b_{x}+a_{y}b_{y}}{\sqrt{a_{x}^2+a_{y}^2}\sqrt{b_{x}^2+b_{y}^2}}

正文

先介绍一些性质

  1. 稍稍观察一下游戏地图我们会发现:游戏内Y轴正方向是向下的,地图最左上方的坐标是(1,1)。

  2. 使用高级触发器${_ffxivparty[1].y}${_ffxivparty[1].x}观察下,发现地图可行动区域中间的坐标是(0,0),地图右方为X轴正向,地图下方为Y轴正向。

接下来我们来看一下高级触发器的官方文档:

  1. heading = Heading of the entity in radians (South 0, North ±PI)

    heading:以弧度表示实体的面向(游戏中的南方为0,游戏中的北方为±PI)

    很有趣的表示方式,与我们认知中的截然不同。那个很流行的身位警察触发器就是对该变量的一个优秀运用。

  2. distance = Distance from the main combatant (you) to the entity

    distance:从冒险家(玩家)到实体的距离

    这个距离不是两者中心点的距离,而是双方目标圈上最近两点的距离。ps:把双方目标圈视作两个圆,重合、相交、相切时distance为0。

    该值同时也是判定单体目标技能是否允许施放的值。如救疗的距离为30米,该变量值为30时你刚好勉强能奶到你的队友。

    玩家的目标圈大小半径为1米。(希望我没弄错)

  3. distance(x1, y1, x2, y2) = distance between the two given points
    distance(x1,y1,x2,y2):两个给定点之间的距离
    此为函数而非变量,如果你传入双方的坐标,那么你得到的是双方目标圈圆心的距离。对于两个玩家的目标圈来说:重合为0、相切为2。

  4. pi = 3.1415...
    pi:3.14159265358979
    想单独使用该变量的话可以${numeric:pi},精度蛮高的基本够用了。

别的暂时没想起什么了,有的话我在评论区补充下。

实际应用一

这期教程包括这个应用的内容是从

ff14高级触发器不正经教程(3)-无面捕/动捕Live2D直播方案介绍及初步教程

的衍生触发器组中拆出来的,想拿来参考或者改动的话直接找我要就好~该触发器原本用来控制Live2D模型的面向与视线方向,触发器完整表达式如下:

x的取值范围为(-1,1)刚好符合Live2D模型X轴参数的参数范围,若模型的参数范围为±30直接在最后做乘法即可。

y的取值范围……y没有取值范围,甚至太大了所以我对y值做了一个除以5的操作,你也不想你的Live2D拼命仰着脖子看节日活动npc吧

触发器会将x值和y值计算出来,然后通过post请求发送给后台程序,后台程序再将值反馈到模型上。几次直播下来感觉效果还不错~(指爆发期占星发卡时头摇的像个拨浪鼓)

y值只是一个z值相减的过程,没什么好说的。来简单介绍下x值的计算

  1. 规划一下我想要的效果:游戏角色向左极限转头时x的值为-1,向右极限转头时为1

  2. 思考了一个绝本CD、翻课本、上网查资料、最后在暗恋对象朋友那里得到了答案:使用arccos公式计算角色所处位置到目标角色位置向量y轴正方向单位向量夹角的值θ。

  3. 发现θ可能与预期相反,加一个判断:目标x值小于角色自身则θ取相反数(触发器表达式中为与-1做乘操作)。

  4. 将游戏角色自身面向(heading变量)与θ相减,得到角色转头的角度(弧度制)。

  5. 测试发现计算结果范围为(-2π,2π)。计算结果是周期函数,不应直接除2π,而应截取(-π,π)的区间。高级触发器单个表达式不允许定义变量,根据条件判断的话表达式又会很长。在试错与思考后想出了一个“我不知道为什么能运行但确实能运行”的方法:将这个值+3π、%2π、-3π、%4π、+2π后就能把这个周期函数变成我想要的样子了,它的取值范围为(-π,π)。

  6. 最后简简单单除以π,得到(-1,1)的取值范围。

实际应用二

应用二是从

ff14rp店营业高级触发器-ff14AuraCan6.2.1介绍

的6.2.2版本抽出来的,有了应用一的铺垫,应用二做起来就十分简单了

应用二被设计配合鲶鱼精邮差使用(当然你也可以稍作修改配合文本显示Aura使用)。逻辑与应用一相近,与之不同的是最终结果被我做了向下取整的操作(round),并配合substring函数对表示方位的字符串进行截取。实际使用效果如下:

每两个一组,主动找人可以在游戏聊天框内使用宏命令(龙尾轻轻摇替换为玩家名)

“在看你”和“移开了目光”的教程可以参考

ff14高级触发器不正经教程-想让你的角色被注视时摇摇尾巴吗?

6.2.2版本已上传至github

https://github.com/raine01/ff14AuraCan/blob/main/ff14AuraCan6.2.2.xml

ff14高级触发器不正经教程(5)-原来你在我身后~触发器方位角、距离变量的实际运用的评论 (共 条)

分享到微博请遵守国家法律