简单飞机吧 关注:26,380贴子:955,913

Funky Tree教程

只看楼主收藏回复



IP属地:广东1楼2020-05-03 10:11回复


    IP属地:浙江来自Android客户端2楼2020-05-03 10:24
    回复
      一,首先说说飞行数据,也就是在游戏中检测到的数据:
      Altitude ——离海平面高度(m)
      AltitudeAgl ——离地高度(m)
      GS ——飞机地速(m/s)
      IAS ——飞机空速(m/s)
      TAS ——飞机真空速(m/s)
      Fuel ——剩余油量(百分比)
      AngleOfAttack ——攻角(速度向量在左右对称面上的投影与正前方的夹角,-180到180)(度)
      AngleOfSlip ——侧滑角(速度向量在机翼面上与正前方的夹角,-180到180)(度)
      PitchAngle ——飞机的俯仰角(度)
      RollAngle ——飞机的翻滚角(度)
      Heading ——飞机的航向(度)
      Time ——时间(秒)重生时清零
      pi ——圆周率
      e ——自然常数e
      true ——真(input里是1)
      false ——假(input里是-1)
      GForce ——加速度(过载,标量,g)
      VerticalG ——上面的垂直分量(g)
      ammo(“武器的名字”) ——能返回该名称武器剩余携带数量值(枪8行)
      ammo(SelectedWeapon) ——能返回当前选取武器剩余携带数量值
      GearDown ——放下起落架
      Latitude ——纬度(水平坐标系的Y或X)(m)
      Longitude ——经度(水平坐标系的X或Y)(m)
      PitchRate ——俯仰角速度(度)
      RollRate ——翻滚角速度(度)
      YawRate ——偏航角速度(度)


      IP属地:广东3楼2020-05-03 10:29
      收起回复
        赶上直播了


        IP属地:湖南来自Android客户端4楼2020-05-03 10:54
        收起回复
          二、数学运算符与逻辑运算符(注意中英文输入)
          数学运算符无非就是四则运算符:加:+ ;减:- ;乘:* ;除:/ ;
          逻辑运算符就是初高中都学过的:大于:> ;大于等于:>= ;等于:= ;小于等于:<= ;小于:< ;与(且): & ; 或:| ;还有三元运算:A?B:C ——按照格式,A为判断量,满足时执行B段,不满足则C段(段内ABC 是从右往左开始运算);
          还有就是限制优先级的符号:() ——小括号;
          优先级,也就是一串东西先算什么,由高到低:
          1、优先级最高的就是小括号(),一先把小括号内的数算完再执行其他的,并排的小括号间是从左往右;
          2、乘法*,除法/ ,从左往右依次运算;
          3、加法+,减法- ,也是从左往右;
          4、大于>,大于等于>=,等于=,小于等于<=,小于<,之间也是从左往右;
          5、与&;
          6、或|;
          7、三元运算A?B:C ,优先度最低;


          IP属地:广东5楼2020-05-03 10:54
          收起回复
            三、各种数学函数
            abs(x) ——绝对值,x可以是飞行数据也可以是常数,由于绝对值比较常见所以就不举例介绍了
            ceil(x) ——往正方向取整,正数小数点后面有值就直接进一,负数去掉小数。举例:ceil(Throttle) ——只要油门不为零则输出1。
            floor(x) ——往负方向取整,正数去掉小数,负数小数点后有值则进一。举例:floor(Throttle) ——满油门输出1。
            round(x) ——正经的四舍五入,现实常用所以不举例。
            clamp(x,min,max) ——x小于min时输出为min,大于max时输出为max,只有x在区间内时输出才是x。举例:clamp(Roll+Pitch,-1,1) ——用在机翼的转轴上时可以限制机翼转动的最大角度不会受叠加影响。
            clamp01(x) ——上面那条的min取0max取1,比较近似所以不举例了,不过与逻辑运算符搭配后用得更多。
            min(a,b) ——a与b两个数谁小输出就是谁,可以当单向约束的clamp用,比如:min(Pitch,0) ——Pitch只有往负方向拉动时才会有输出
            max(a,b) ——a与b两个数谁大输出就是谁,与min类似,就不举例了。
            deltaangle(a,b) ——角b的度数减去角a的度数,当输出角度大于180°时自动变为-180°方向,反之亦然(输出度数,判断一向量在另一向量的哪侧与计算两向量角度差时用;转换坐标系),虽然需要用到时会特别好用但平时用得少所以不举例了。


            IP属地:广东6楼2020-05-03 11:45
            收起回复
              sign(x) ——x的正负号为正时出1(包括零),负时出-1。
              exp(x) ——自然常数e的x次方,单纯数学运算,没有例子。
              pow(x,p) ——x的p次方,也没啥好说的。
              sqrt(x) ——x的平方根
              log(x,p) ——以p为底x的对数
              log10(x) ——就是lg,以10为底x的对数
              sin(x) ——三角函数sin
              cos(x) ——三角函数cos
              tan(x) ——三角函数tan
              asin(x) ——反三角函数arcsin
              acos(x) ——反三角函数arccos
              atan(x) ——反三角函数arctan
              rate(x) ——x相对于时间的导数(变化率)
              sum(x) ——x相对于时间的积分(极短时间段与输入相乘之和)


              IP属地:广东7楼2020-05-03 13:25
              回复
                lerp(a,b,t) ——用t的比例在a和b之间做线性插值(用t在a和b之间做线性差值;参数t限制在0到1之间,当t<=0时返回值为a,当t>=1时返回值为b,当t为0.5时返回值为a到b的中间点)举例:lerp(0,180,Throttle) ——某个转轴按Throttle的比例转动多少度,最大是180度
                lerpangle(a,b,t) ——类似上面,但输入的是度数,且输出会在360°以内跳转(类似repeat或deltaangle)用得比较少。
                lerpunclamped(a,b,t) ——类似上上条,但输出不会限制在a与b之间(可以外插),也就是t不会限制在0到1的范围内
                smoothstep(a,b,t) ——类似于lerp,但在最后进行平滑处理(整段函数都可导且输出值为a到b,t从a到b输出增大)画函数图时就会发现,当t接近零或1时会把拐点的尖点给弄圆滑。
                inverselerp(a,b,x) ——计算在[a,b]范围内产生插值值的线性参数t(与lerp正好相反,该函数是计算出x值在a到b之间(所占比例)的参数)举例:inverselerp(0,280,TAS) ——指针速度表,速度等于280时输出1,也就是快爆表时。
                repeat(x,l) ——循环x值,让他大于0小于l(类似进制的进位,当l为10时只看个位数,比如x=29时输出为9但x=30是输出为0),(另一种说法,每当x大于等于l时减去一个l,x小于0时加一个l)搞数字显示屏时需要用到,且用处很广。举例:repeat(Throttle,1) ——当Throttle不为零时输出,而当满油门时关闭。
                pingpong(x,l) ——当x小于0时反转正负号,当x大于l时变成l-(x-l),相当于乒乓球在两面墙之间来回弹(匀速往返)[步行机常用]细节上的详细讲解在步行机帖子有说,例子那边也有。


                IP属地:广东10楼2020-05-03 14:05
                收起回复
                  smooth(x,rate) ——使x的变化率不大于rate,举例:clamp01(smooth(LandingGear*2,1)-1) ——延时启动某转轴
                  PID(target,current,P,I,D) ——pid控制,复杂控制的一种,target是目标值,current是当前值,P是比例,I是积分,D是微分,简飞玩车的人多,拿悬挂当例子target就是期望的底盘与地面距离,current就是目前地盘与地面的距离,P可以说是弹簧强度,设定的值越大、target与current的差越大,弹力就越大。D就是阻尼,限制了弹簧伸长的速度,增加平稳性,但太大了会让悬挂反应变慢。而I就是消除静差,也就是加上液压,当车里坐了一个大胖子,底盘想必会下降,这时候没理由换个更硬的弹簧,毕竟已经装好了,这时候用液压活塞也就是I来使底盘上升就可以弥补这段差值,但I不宜过大,因为PID的I是只要目标与当前不一样时少多少就加多少,如果调大了可能会加剧晃动。举个例子:PID(15,AltitudeAgl,1,0.01,0.6) ——某个悬浮车的悬浮系统设定了悬浮高度是15m,必须装载在某个可以正面影响离地高度的元件,比如向着地面的涡扇发动机,道理很简单,如果装载在不会影响current的元件上输出是多少都没什么用。


                  IP属地:广东11楼2020-05-03 14:31
                  收起回复
                    四、一般格式
                    对于简单控制,比如满足什么条件时执行什么动作,比如离地低于多少时打开起落架(转轴做的),高于时收回:
                    clamp01(AltitudeAgl>=300)*1 ——这里边的“AltitudeAgl>=300”就是判断(开关),但大于等于时也就是满足输出是1,但小于也就是不满足时输出是-1,所以得用clamp01括住把-1变为零。当条件不满足时不输出后面的值1(动作),也就是input输出0,此时转轴没有动作,起落架是放下的就是放下,当条件满足时,“AltitudeAgl>=300”输出是1,此时1*(动作)也就是执行动作本身了,例子里的动作就是1(可以略去),此时转轴开始转动,收起起落架。
                    一般格式就是clamp01(开关)*(动作) ;或直接把开关写在激活组栏。


                    IP属地:广东12楼2020-05-03 14:56
                    回复
                      五、其他常用函数(省时间原理就不说了)
                      水稳(只能在平地用版本):sum(Yaw*60-clamp01(rate(Heading)<720)*rate(Heading))/设定的角度 转轴
                      延时启动:clamp01(smooth(2*clamp01(x),1)-1) 转轴,x为按键
                      延时关闭:clamp01(smooth(2*clamp01(x),1)) 转轴,x为按键
                      某飞控:PID(Pitch*20,AngleOfAttack,1,0.02,0.5) 转轴,与机翼相连
                      四分三圆指针表:inverselerp(min,max,x)*720/设定的角度 min为表的最小值max为表的最大值,x为要显示的数据
                      整圆指针表:x/每圈的数值*360/设定的角度 转轴
                      转速表:clamp01(发动机开关)*(sin(Time*(1+abs(Pitch))*810)*(0.22-abs(Pitch)*0.1)+abs(Pitch*0.8)+0.15)*最大角度/设定角度 式中的0.15是怠速速时的指示值,0.8是前进时加的值,可适当调整。
                      单激活组多用:a=repeat(sum(rate(abs(clamp01(开关)))),x) a就是按下多少次某激活组按钮多少次后激活,x是按下第几次后清零。
                      选定某武器后激活元件(比如炮,但有bug):ammo(SelectedWeapon)=ammo(“武器的名字”) 写在激活组
                      其他的想到再补充


                      IP属地:广东13楼2020-05-03 15:36
                      收起回复
                        欢迎问问题,@简单高手💤


                        IP属地:广东来自Android客户端14楼2020-05-03 15:41
                        回复


                          IP属地:广东17楼2020-05-03 15:44
                          回复
                            版本更新后新东西会在这个贴更新,或许会挖坟


                            IP属地:广东18楼2020-05-03 15:45
                            收起回复