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

funkytree的使用(简单飞机复杂的代码怎么写)

2022-08-06 19:27 作者:昊天dhtv587  | 我要投稿

在游玩简单飞机的时候,

大多数同学肯定想过,

有没有什么办法,可以在可操作部件上实现多种不同的复杂的指令和操作

举些例子

====在一个转轴上,可接受不同的指令,比如既可roll又可pitch,

===比如轮子的只能在空中的条件下收回,地面不允许收回

==延迟启动舱门,延迟关闭舱门

=飞机的飞控

等等等等。。。。。。


funky tree 这种工具,或者书写的规则,可以帮助玩家实现很多复杂的操作,来完成我们不同情况的需求

那么应该如何了解?

我们先在百度搜索funkytree,找到这个帖子,里面是关于funkytree代码名词解释代码工具的使用方法(应该是,好久没看了)

不过一开始最重要的,是如何书写这些代码 以实现我们想做出来的复杂功能。


先从最简单的说起

一个转轴上同时可以roll和pitch

如下图所示,打开简飞,选中部件,打开从右到左第三个图标,(记得激活两个mod,在游戏进入界面的mods可以找到,分别是overload和fineturner,并激活,否则找不到这个图标喔)

顶部换到InputController栏,并找到input选项,里面输入Pitch+Roll  注意大小写,➕加号这样的符号也分中文和英文的版本,是英文版本,不要写错了)。

你就可以看到这个转轴同时实现了Pitch和Roll两个操作


如果roll或者pitch需要反转怎么办?

直接乘以-1或者减法就行,

比如Pitch*-1+Roll或者Pitch-Roll

可以看到,要实现这样的操作很简单,就是直接使用名词加减乘除就行

其实我们可以看到,就是简单的加减乘除而已,如果还要加上yaw轴就直接输入+Yaw就行了

funkytree的书写就是用加减乘除和括号把这些名次和代码工具组成的工具像积木一样把它们拼接在一起


再对这些常用的部件如何运作的原理做一些解释

其实我们使用操作的时候,比如转轴里的Pitch上下,其实就是从1到-1过程,你不动它,就是0,它门是跟着数字的大小改变的

如果我们把Pitch乘以2,也就是Pitch*2,就会发现其动作的幅度也变成了之前的两倍,

又或者不输入Pitch*2,就只在转轴里输入个1,你就会发现转轴就一直固定在一个位置,这就是1的位置,也就是正常拉到顶的位置,你输入-1就会发现转轴固定在刚才相反的位置了)

其他很多操作也是从一到负一的过程,

我们在操作飞机的时候下面不是有12345678那些按钮吗,你按下这些按钮,它所表达的数据就会一瞬间从-1变成1(当然按钮8是相反的)。什么TRIM VTOL也是从1到-1的过程


接下来我就直接介绍比较常用的几个代码工具了,前面的东西我相信摸索一会儿都能懂

代码工具如下    代码工具不需要大写,小写就可以

1 限制代码

clamp(里面填东西)

用途是限制大小,比如尾翼转轴里面输入Pitch+Roll,我们可以发现当Pitch和Roll都是-1的时候,这个代码两个相加就是-2了,这架飞机的尾翼如果转的角度就会翻一倍,这么大的角度可能尾翼就直接碰到地面了,所以需要对尾翼进行限制到只能动作1的幅度,这时候就可以用到clamp这个工具↓↓↓↓↓↓↓↓↓↓

clamp(Pitch+Roll,-1,1)      

括号里分别是 你想要的动作,逗号1表示分割,-1表示最小多少,逗号2表示分割,1表示最大多少

2 判断代码

clamp01(里面填东西)

用途是判断数据,这个代码在符合条件输出1不符合条件输出0比如判断速度大于10m/s关闭座舱盖   ↓↓↓↓↓↓↓↓↓↓

clamp01(TAS>10)

注意大于等于之类的这样书写>=,比如clamp01(TAS>=10)


3 调速代码

smooth这里填要填的东西数字即速度的大小

在一些场景是需要部件缓慢运行的,比如按下数字1这个按钮,它会一瞬间从-1变成1,这个变化太急促了,需要对它进行降速,就可以写↓↓↓↓↓↓↓↓↓↓

smooth(Activate1,0.5)

逗号代表隔断,0.5代表速度


4自动控制(PID)注意PID三个字母是需要大写的

PID(目标值,当前值,P比例,I积分,D微分)

PID自动控制是一种可以精细控制的算法,刚接触的同学可能不清楚它需要使用的场景,

比如我要设置一个悬停的火箭,这个火箭想要停留在10米的高度

是不是就必须不断精细控制推力大小

所以就可以用PID算法,它会自动根据当前值追赶目标值

不过不同的场景所需要调整的幅度都是的,所以后面三个值P比例,I积分,D微分,就是用来调节的参数(根据我自己的经验,一般只需要调节P比例和D微分两个就行了,I积分就不用管了具体怎么调节各位同学自己找资料学习吧,up就懒得学了,我直接用trim和vtol根据手感进行调节)P比例,I积分,D微分,怎么写如下↓↓↓↓↓↓↓↓↓↓

PID(10,AltitudeAgl,0.1,0,0.1)


上面这些就是最主要的funkytree代码工具,基本可以覆盖百分之八十五的使用场景,学会使用这写代码工具,其他肯定也看得懂学得会


最后解释下延迟代码的原理

延迟启动的原理就是利用↓↓↓↓↓↓↓↓↓↓这俩代码工具

smooth()调速代码 

clamp01() 判断代码

首先

按下起落架按钮的时候

其代码的值是不是瞬间1变成了0(有点忘了起落架是不是从0到1了,先这样写了)

这个时候我们先使用smooth()调速代码,将其减速

举个形象的例子,一个球从桌子左边缓慢移动到右边(因为调速的原因,本来是瞬移到右边的,现在变成缓慢移动了)

然后我们这时候clamp01() 判断代码就起作用了

设置它判断除非球在最右边,否则不输出1,输出0

因为球是缓慢到右边的,而判断条件是球在最右边时才输出1,所以“延迟启动”


延迟关闭则相反,

还是一样的情况,

但是变成了判断只要球往右边移动一点点,就输出1

在最左边才输出0

这就变成了,部件一按即启动,

但是关闭,因为需要这个“球”需要缓慢移动到最左边,所以就“延迟关闭”


另外由于up主本人并没有系统学习过funkytree,以上均为up自己摸索得出的经验,不一定就是对的,大家自行参考







funkytree的使用(简单飞机复杂的代码怎么写)的评论 (共 条)

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