// "Bedivere" // // ※RCsound+のエイミングモード専用モデルです。 // ※モデルを呼び出したらF8キーを1回押してください。 // // --マウス操作---------------------------- // カーソル移動=砲塔向き移動 // 左クリック =アースホルン発射 // 右クリック =重機関砲発射 // // --キーボード操作------------------------ // Q=左ステア W=前進 E=右ステア // A=左旋回 S=後退 D=右旋回 // Z=機体カラーの変更 X=機体カラーの変更 C=車体固定 // QE同時押=ステア角度固定 // W二度押し=後部補助ジェット作動 // S二度押し=前部補助ジェット作動 // // FV=カメラのズーム変更 // FV同時押し=ズームを初期位置に戻す // G=方位維持ON/OFF // B=角度維持ON/OFF // ↑=方位アンカー表示ON/OFF // ↓=ライン表示ON/OFF // Val { //ハイブリッドキャノン //第一関節(高速) CANOA101(default=-180,min=-360,max=360,step=0,disp=0) CANOA102(default=-180,min=-360,max=360,step=0,disp=0) CANOA103(default=-180,min=-360,max=360,step=0,disp=0) CANOA104(default=-180,min=-360,max=360,step=0,disp=0) CANOA105(default=-180,min=-360,max=360,step=0,disp=0) CANOA106(default=-180,min=-360,max=360,step=0,disp=0) //第二関節(低速) CANOA2011(default=-180,min=-360,max=360,step=0,disp=0) CANOA2012(default=-180,min=-360,max=360,step=0,disp=0) CANOA2013(default=-180,min=-360,max=360,step=0,disp=0) CANOA2014(default=-180,min=-360,max=360,step=0,disp=0) CANOA2021(default=-180,min=-360,max=360,step=0,disp=0) CANOA2022(default=-180,min=-360,max=360,step=0,disp=0) CANOA2023(default=-180,min=-360,max=360,step=0,disp=0) CANOA2024(default=-180,min=-360,max=360,step=0,disp=0) CANOA2031(default=-180,min=-360,max=360,step=0,disp=0) CANOA2032(default=-180,min=-360,max=360,step=0,disp=0) CANOA2033(default=-180,min=-360,max=360,step=0,disp=0) CANOA2034(default=-180,min=-360,max=360,step=0,disp=0) CANOA2041(default=-180,min=-360,max=360,step=0,disp=0) CANOA2042(default=-180,min=-360,max=360,step=0,disp=0) CANOA2043(default=-180,min=-360,max=360,step=0,disp=0) CANOA2044(default=-180,min=-360,max=360,step=0,disp=0) CANOA2051(default=-180,min=-360,max=360,step=0,disp=0) CANOA2052(default=-180,min=-360,max=360,step=0,disp=0) CANOA2053(default=-180,min=-360,max=360,step=0,disp=0) CANOA2054(default=-180,min=-360,max=360,step=0,disp=0) CANOA2061(default=-180,min=-360,max=360,step=0,disp=0) CANOA2062(default=-180,min=-360,max=360,step=0,disp=0) CANOA2063(default=-180,min=-360,max=360,step=0,disp=0) CANOA2064(default=-180,min=-360,max=360,step=0,disp=0) //トリガー CANOP2011(max=2000000,step=2000000,disp=0) CANOP2012(max=2000000,step=2000000,disp=0) CANOP2013(max=2000000,step=2000000,disp=0) CANOP2014(max=2000000,step=2000000,disp=0) CANOP2021(max=2000000,step=2000000,disp=0) CANOP2022(max=2000000,step=2000000,disp=0) CANOP2023(max=2000000,step=2000000,disp=0) CANOP2024(max=2000000,step=2000000,disp=0) CANOP2031(max=2000000,step=2000000,disp=0) CANOP2032(max=2000000,step=2000000,disp=0) CANOP2033(max=2000000,step=2000000,disp=0) CANOP2034(max=2000000,step=2000000,disp=0) CANOP2041(max=2000000,step=2000000,disp=0) CANOP2042(max=2000000,step=2000000,disp=0) CANOP2043(max=2000000,step=2000000,disp=0) CANOP2044(max=2000000,step=2000000,disp=0) CANOP2051(max=2000000,step=2000000,disp=0) CANOP2052(max=2000000,step=2000000,disp=0) CANOP2053(max=2000000,step=2000000,disp=0) CANOP2054(max=2000000,step=2000000,disp=0) CANOP2061(max=2000000,step=2000000,disp=0) CANOP2062(max=2000000,step=2000000,disp=0) CANOP2063(max=2000000,step=2000000,disp=0) CANOP2064(max=2000000,step=2000000,disp=0) //対反動 ARJ(default=0,min=-2000000,max=2000000,disp=0) //砲身角度 NECK_ANG (default= 090, min= 045, max=100, disp=0) NECK_TWIST(default= 090, min= 060, max=120, disp=0) //主砲 //角度 NSA101(default=-180,min=-360,max=360,disp=0) NSA102(default=-180,min=-360,max=360,disp=0) NSA103(default=-180,min=-360,max=360,disp=0) NSA104(default=-180,min=-360,max=360,disp=0) NSA105(default=-180,min=-360,max=360,disp=0) NSA106(default=-180,min=-360,max=360,disp=0) NSA107(default=-180,min=-360,max=360,disp=0) NSA108(default=-180,min=-360,max=360,disp=0) NSA109(default=-180,min=-360,max=360,disp=0) NSA110(default=-180,min=-360,max=360,disp=0) NSA111(default=-180,min=-360,max=360,disp=0) NSA112(default=-180,min=-360,max=360,disp=0) NSA113(default=-180,min=-360,max=360,disp=0) NSA114(default=-180,min=-360,max=360,disp=0) NSA115(default=-180,min=-360,max=360,disp=0) NSA116(default=-180,min=-360,max=360,disp=0) NSA117(default=-180,min=-360,max=360,disp=0) NSA118(default=-180,min=-360,max=360,disp=0) NSA119(default=-180,min=-360,max=360,disp=0) NSA120(default=-180,min=-360,max=360,disp=0) //トリガー NSP101(default=0,max=2000000,step=2000000,disp=0) NSP102(default=0,max=2000000,step=2000000,disp=0) NSP103(default=0,max=2000000,step=2000000,disp=0) NSP104(default=0,max=2000000,step=2000000,disp=0) NSP105(default=0,max=2000000,step=2000000,disp=0) NSP106(default=0,max=2000000,step=2000000,disp=0) NSP107(default=0,max=2000000,step=2000000,disp=0) NSP108(default=0,max=2000000,step=2000000,disp=0) NSP109(default=0,max=2000000,step=2000000,disp=0) NSP110(default=0,max=2000000,step=2000000,disp=0) NSP111(default=0,max=2000000,step=2000000,disp=0) NSP112(default=0,max=2000000,step=2000000,disp=0) NSP113(default=0,max=2000000,step=2000000,disp=0) NSP114(default=0,max=2000000,step=2000000,disp=0) NSP115(default=0,max=2000000,step=2000000,disp=0) NSP116(default=0,max=2000000,step=2000000,disp=0) NSP117(default=0,max=2000000,step=2000000,disp=0) NSP118(default=0,max=2000000,step=2000000,disp=0) NSP119(default=0,max=2000000,step=2000000,disp=0) NSP120(default=0,max=2000000,step=2000000,disp=0) //対反動 ARJ2(default=0,min=-2000000,max=2000000,disp=0) //中心カウル角度 CENTER_ANG(default=-106, min=-9999999, disp=0) //X脚 XNW1(default=-135, min=-9999999, disp=0) XNW2(default= 135, min= 090, max= 180, step=3, disp=0) XNW3(default=-045, min=-090, max=-000, step=3, disp=0) XNE1(default= 135, min=-9999999, disp=0) XNE2(default=-135, min=-180, max=-090, step=3, disp=0) XNE3(default= 045, min= 000, max= 090, step=3, disp=0) XSW1(default=-045, min=-9999999, disp=0) XSW2(default=-135, min=-9999999, disp=0) XSW3(default= 045, min=-9999999, disp=0) XSE1(default= 045, min=-9999999, disp=0) XSE2(default= 135, min=-9999999, disp=0) XSE3(default=-045, min=-9999999, disp=0) //CORE3 CORE3_DIR(default= 0, min=-9999999, disp=0) //内積連動サスペンション //基本角度 NAISUS_NWA (default= 100, min=-360, max= 360, disp=0) // 090 NAISUS_NWB (default=-200, min=-360, max= 360, disp=0) //-180 NAISUS_NWC (default= 160, min=-360, max= 360, disp=0) // 150 NAISUS_NEA (default=-100, min=-360, max= 360, disp=0) NAISUS_NEB (default= 200, min=-360, max= 360, disp=0) NAISUS_NEC (default=-160, min=-360, max= 360, disp=0) NAISUS_SWA (default=-100, min=-360, max= 360, disp=0) NAISUS_SWB (default= 200, min=-360, max= 360, disp=0) NAISUS_SWC (default=-160, min=-360, max= 360, disp=0) NAISUS_SEA (default= 100, min=-360, max= 360, disp=0) NAISUS_SEB (default=-200, min=-360, max= 360, disp=0) NAISUS_SEC (default= 160, min=-360, max= 360, disp=0) //基本角度内側 NAISUS_NWAIN(default=-100, min=-360, max= 360, disp=0) // 090 NAISUS_NWBIN(default= 200, min=-360, max= 360, disp=0) //-180 NAISUS_NWCIN(default=-160, min=-360, max= 360, disp=0) // 150 NAISUS_NEAIN(default= 100, min=-360, max= 360, disp=0) NAISUS_NEBIN(default=-200, min=-360, max= 360, disp=0) NAISUS_NECIN(default= 160, min=-360, max= 360, disp=0) NAISUS_SWAIN(default= 100, min=-360, max= 360, disp=0) NAISUS_SWBIN(default=-200, min=-360, max= 360, disp=0) NAISUS_SWCIN(default= 160, min=-360, max= 360, disp=0) NAISUS_SEAIN(default=-100, min=-360, max= 360, disp=0) NAISUS_SEBIN(default= 200, min=-360, max= 360, disp=0) NAISUS_SECIN(default=-160, min=-360, max= 360, disp=0) //スプリング(初期値 spring=1.00) SPR_FB(default=0.060,disp=0) //前 SPR_RB(default=0.060,disp=0) //後 //ダンパー (初期値 damper=0.50) DAM_FB(default=0.200,disp=0) //前 DAM_RB(default=0.200,disp=0) //後 //車輪 WHEEL_NW(min=-1000000,max=1000000,disp=0) WHEEL_NE(min=-1000000,max=1000000,disp=0) WHEEL_SW(min=-1000000,max=1000000,disp=0) WHEEL_SE(min=-1000000,max=1000000,disp=0) //補助ジェット //前 HATCH_F(default= 90, min=-360, max= 360, disp=0) JET_F (default=000, min=-1000000, max=1000000, disp=0) //後 HATCH_R(default= 90, min=-360, max= 360, disp=0) JET_R (default=000, min=-1000000, max=1000000, disp=0) //機体カラー //カウル以外 COLOR_01 (default=#AAAAAA,disp=0) //メイン COLOR_02 (default=#9ccc99,disp=0) //サブ COLOR_03 (default=#444444,disp=0) //ダーク //カウル COLOR_01C(default=#777777,disp=0) //メイン COLOR_02C(default=#586877,disp=0) //サブ COLOR_03C(default=#333333,disp=0) //ダーク COLOR_04C(default=#3A3A3A,disp=0) //ダーク2 COLOR_05C(default=#af9066,disp=0) //ライト } Key { 14:XNW2(step= 1.5),XNE2(step= 1.5),XNW3(step= 1.5),XNE3(step= 1.5) 16:XNW2(step=-1.5),XNE2(step=-1.5),XNW3(step=-1.5),XNE3(step=-1.5) } Body { //ボディ制作開始 Core(){ //コア----------------WEIGHT CHIP FRAME COWL TRIM RUDDER JET ARM RLW WHEEL //砲塔(上半身) S:WEIGHT(name=CORE2,OPTION=5,color=COLOR_01){ //砲塔中心(ライン) S:COWL(angle= 075 ,Effect=#ffff){ S:COWL(angle=-150 ,Effect=#ffff){ S:COWL(name=CENTER,angle=CENTER_ANG,Effect=#ffff){ //水平=-105 W:COWL(name=LEFT ,angle=0,Effect=#ffff){}}}} //装甲 W:WEIGHT(angle= 090,OPTION=6,color=COLOR_01){} //中央 E:WEIGHT(angle= 090,OPTION=5,color=COLOR_02){ S:WEIGHT(angle= 000,OPTION=5,color=COLOR_01){ //"耳"装甲 S:WEIGHT(angle=-150,OPTION=5,color=COLOR_01){ S:WEIGHT(angle=-060,OPTION=5,color=COLOR_01){}} }} //砲塔内部 S:WEIGHT(angle= 090,OPTION=5,color=0){ //重機関砲1 S:ARM(angle=-CANOA102,color=COLOR_03){ S:ARM(NAME=CANON2021,angle=CANOA2021,Option=100000,power=CANOP2021,color=COLOR_03){} S:ARM(NAME=CANON2022,angle=CANOA2022,Option=100000,power=CANOP2022,color=COLOR_03){} S:ARM(NAME=CANON2023,angle=CANOA2023,Option=100000,power=CANOP2023,color=COLOR_03){} S:ARM(NAME=CANON2024,angle=CANOA2024,Option=100000,power=CANOP2024,color=COLOR_03){}} S:ARM(angle=-CANOA103,color=COLOR_03){ S:ARM(NAME=CANON2031,angle=CANOA2031,Option=100000,power=CANOP2031,color=COLOR_03){} S:ARM(NAME=CANON2032,angle=CANOA2032,Option=100000,power=CANOP2032,color=COLOR_03){} S:ARM(NAME=CANON2033,angle=CANOA2033,Option=100000,power=CANOP2033,color=COLOR_03){} S:ARM(NAME=CANON2034,angle=CANOA2034,Option=100000,power=CANOP2034,color=COLOR_03){}} //対反動 N:JET(angle=180, power=ARJ, color=COLOR_03){} //"顎"装甲 S:WEIGHT(angle= 90,OPTION=5,color=COLOR_03){ S:WEIGHT(angle=135,OPTION=5,color=COLOR_03){ //カウル S:COWL(angle=-137,OPTION=5,Effect=#0000,color=COLOR_03C){ S:COWL(angle=-179,OPTION=0,Effect=#FFFF,color=COLOR_01C){ S:COWL(angle= 179,OPTION=0,Effect=#0000,color=COLOR_03C){}} S:COWL(angle=-110,OPTION=0,Effect=#0000,color=COLOR_01C){ W:COWL(angle=-089.5,OPTION=0,Effect=#0000,color=COLOR_01C){} E:COWL(angle=-090,OPTION=0,Effect=#0000,color=COLOR_01C){} S:COWL(angle=-178,OPTION=0,Effect=#0f00,color=#181818){} //黒板 }} }} } S:WEIGHT(angle= 090,OPTION=5,color=0){ //重機関砲2 S:ARM(angle=-CANOA104,color=COLOR_03){ S:ARM(NAME=CANON2041,angle=CANOA2041,Option=100000,power=CANOP2041,color=COLOR_03){} S:ARM(NAME=CANON2042,angle=CANOA2042,Option=100000,power=CANOP2042,color=COLOR_03){} S:ARM(NAME=CANON2043,angle=CANOA2043,Option=100000,power=CANOP2043,color=COLOR_03){} S:ARM(NAME=CANON2044,angle=CANOA2044,Option=100000,power=CANOP2044,color=COLOR_03){}} S:ARM(angle=-CANOA105,color=COLOR_03){ S:ARM(NAME=CANON2051,angle=CANOA2051,Option=100000,power=CANOP2051,color=COLOR_03){} S:ARM(NAME=CANON2052,angle=CANOA2052,Option=100000,power=CANOP2052,color=COLOR_03){} S:ARM(NAME=CANON2053,angle=CANOA2053,Option=100000,power=CANOP2053,color=COLOR_03){} S:ARM(NAME=CANON2054,angle=CANOA2054,Option=100000,power=CANOP2054,color=COLOR_03){}} S:ARM(angle=-CANOA106,color=COLOR_03){ S:ARM(NAME=CANON2061,angle=CANOA2061,Option=100000,power=CANOP2061,color=COLOR_03){} S:ARM(NAME=CANON2062,angle=CANOA2062,Option=100000,power=CANOP2062,color=COLOR_03){} S:ARM(NAME=CANON2063,angle=CANOA2063,Option=100000,power=CANOP2063,color=COLOR_03){} S:ARM(NAME=CANON2064,angle=CANOA2064,Option=100000,power=CANOP2064,color=COLOR_03){}} //中央噴射口装甲 N:WEIGHT(angle=-110,OPTION=5,color=COLOR_01){} S:WEIGHT(angle=-110,OPTION=5,color=COLOR_01){} //二連装キャノン W:WEIGHT(angle=-000,OPTION=8,color=0){ //弾倉 N:JET(angle=180,option=0,power=ARJ2,effect=1,color=0){ S:ARM(angle=NSA101,option=1600000,power=NSP101,color=#444444){} S:ARM(angle=NSA102,option=1600000,power=NSP102,color=#444444){} S:ARM(angle=NSA103,option=1600000,power=NSP103,color=#444444){} S:ARM(angle=NSA104,option=1600000,power=NSP104,color=#444444){} S:ARM(angle=NSA105,option=1600000,power=NSP105,color=#444444){}} N:JET(angle=180,option=0,power=ARJ2,effect=0,color=0){ S:ARM(angle=NSA106,option=1600000,power=NSP106,color=#444444){} S:ARM(angle=NSA107,option=1600000,power=NSP107,color=#444444){} S:ARM(angle=NSA108,option=1600000,power=NSP108,color=#444444){} S:ARM(angle=NSA109,option=1600000,power=NSP109,color=#444444){} S:ARM(angle=NSA110,option=1600000,power=NSP110,color=#444444){}} N:JET(angle=180,option=0,power=ARJ2,effect=0,color=0){ S:ARM(angle=NSA111,option=1600000,power=NSP111,color=#444444){} S:ARM(angle=NSA112,option=1600000,power=NSP112,color=#444444){} S:ARM(angle=NSA113,option=1600000,power=NSP113,color=#444444){} S:ARM(angle=NSA114,option=1600000,power=NSP114,color=#444444){} S:ARM(angle=NSA115,option=1600000,power=NSP115,color=#444444){}} N:JET(angle=180,option=0,power=ARJ2,effect=0,color=0){ S:ARM(angle=NSA116,option=1600000,power=NSP116,color=#444444){} S:ARM(angle=NSA117,option=1600000,power=NSP117,color=#444444){} S:ARM(angle=NSA118,option=1600000,power=NSP118,color=#444444){} S:ARM(angle=NSA119,option=1600000,power=NSP119,color=#444444){} S:ARM(angle=NSA120,option=1600000,power=NSP120,color=#444444){}} //噴射口装甲 N:WEIGHT(angle=-110,OPTION=7,color=COLOR_01){} S:WEIGHT(angle=-110,OPTION=7,color=COLOR_01){} S:WEIGHT(angle= 135,OPTION=8,color=COLOR_01){ //前 W:WEIGHT(angle= 090,OPTION=8,color=COLOR_01){ //側面装甲 }} //側面装甲 W:WEIGHT(angle=-091,OPTION=7,color=COLOR_01){ //"耳"装甲 W:WEIGHT(angle= 150,OPTION=5,color=COLOR_01){ W:WEIGHT(angle= 060,OPTION=5,color=COLOR_01){}} } //砲身・前(カウル) N:COWL(angle=081,Option=0,color=COLOR_03C, Effect=#ffff){ //上 N:COWL(angle= 10, Option=0,color=COLOR_04C, Effect=#0000){ S:COWL(angle= 000, Option=0,color=0, Effect=#0000){} N:COWL(angle= 164, Option=1,color=COLOR_03C, Effect=#0000){} N:COWL(angle=-00, Option=0,color=COLOR_04C, Effect=#0000){ N:COWL(angle= 164, Option=1,color=COLOR_03C, Effect=#0000){} N:COWL(angle=-0.5, Option=0,color=COLOR_04C, Effect=#0000){ }}} } N:COWL(angle=099,Option=0,color=COLOR_03C, Effect=#ffff){ //下 N:COWL(angle=-10, Option=0,color=COLOR_03C, Effect=#0000){ S:COWL(angle= 000, Option=0,color=0, Effect=#0000){} N:COWL(angle=-164, Option=1,color=COLOR_03C, Effect=#0000){} N:COWL(angle= 00, Option=0,color=COLOR_03C, Effect=#0000){ N:COWL(angle=-164, Option=1,color=COLOR_03C, Effect=#0000){} N:COWL(angle= 0.5, Option=0,color=COLOR_03C, Effect=#0000){ }}} } //砲身・中(カウル) N:COWL(angle= 77.5,Option=0,color=COLOR_03C, Effect=#ffff){ N:COWL(angle=-167.5,Option=0,color=COLOR_01C, Effect=#0000){ W:COWL(angle=-090,Option=3,color=COLOR_01C, Effect=#0000){} E:COWL(angle=-090,Option=4,color=COLOR_01C, Effect=#0000){} N:COWL(angle=-105,Option=0,color=0, Effect=#0000){} N:COWL(angle=-019,Option=0,color=COLOR_01C, Effect=#0000){ N:COWL(angle=-176,Option=0, Effect=#ffff){ N:COWL(angle= 176,Option=0,color=COLOR_03C, Effect=#0000){ N:COWL(angle=-176,Option=0, Effect=#ffff){ N:COWL(angle= 176,Option=0,color=COLOR_03C, Effect=#0000){ }}}} W:COWL(angle=-090,Option=4,color=COLOR_01C, Effect=#0000){} E:COWL(angle=-090,Option=3,color=COLOR_01C, Effect=#0000){} } } } } } //首 S:WEIGHT(angle=NECK_ANG, OPTION=6, color=0){ S:WEIGHT(angle= 080, OPTION=6, color=COLOR_03){ S:WEIGHT(name=CORE4, angle=-170, OPTION=6, color=COLOR_03){ //下半身 W:WEIGHT(angle=NECK_TWIST,OPTION=6,color=COLOR_03){ //車体センサー(カウル) E:COWL(angle=-090,Effect=#0000,OPTION=5,color=COLOR_03C){ E:COWL(angle= 179,Effect=#ff00,OPTION=2,color=COLOR_03C){ E:COWL(angle=-179,Effect=#0000,OPTION=2,color=COLOR_05C){ E:COWL(angle= 177,Effect=#ff00,OPTION=2,color=COLOR_03C){ E:COWL(angle=-177,Effect=#0000,OPTION=2,color=COLOR_03C){}}}} } //CORE3 S:COWL(name=CORE3,angle=CORE3_DIR,effect=#FFFF){} //バランスウエイト S:WEIGHT(OPTION=8,color=COLOR_03){} //後部 W:WEIGHT(angle=-090,OPTION=8,color=COLOR_03){ N:WEIGHT(angle=-165,OPTION=8,color=COLOR_03){}} //底部 //X脚・前NW----------------WEIGHT CHIP FRAME COWL TRIM RUDDER JET ARM RLW WHEEL S:WEIGHT(angle=XNW1,OPTION=8,color=COLOR_03){ //車体ジェット N:WEIGHT(angle=-165,OPTION=6,color=COLOR_03){N:JET(angle= 120,power=-JET_F,color=COLOR_03){}} //側面装甲 S:WEIGHT(angle=155 ,OPTION=6,color=COLOR_03){} S:WEIGHT(angle=-HATCH_F,OPTION=6,color=COLOR_01){} //ハッチ S:WEIGHT(name=NAME_NW,angle=0,OPTION=6,color=COLOR_01){ //車輪外側 S:WEIGHT(angle=XNW3,OPTION=6,color=COLOR_03){ //内積サスNWIN W:WEIGHT(name=NAIN_NWAIN,angle=NAISUS_NWAIN,OPTION=6,color=COLOR_03){ W:WEIGHT(name=NAIN_NWBIN,angle=NAISUS_NWBIN,OPTION=6,damper=DAM_FB,spring=SPR_FB,color=COLOR_03){ //トライホイール W:WEIGHT(name=NAIN_NWCIN,angle=NAISUS_NWCIN,OPTION=6,color=COLOR_03){ W:RLW(angle= 120,power=-WHEEL_NW,color=COLOR_03){} E:RLW(angle= 120,power= WHEEL_NW,color=COLOR_03){} //真ん中 } }} } S:WEIGHT(name=NAME_NW,angle=XNW2,OPTION=6,color=COLOR_03){ //内積サスNW W:WEIGHT(name=NAIN_NWA,angle=NAISUS_NWA,OPTION=6,color=COLOR_03){ W:WEIGHT(name=NAIN_NWB,angle=NAISUS_NWB,OPTION=6,damper=DAM_FB,spring=SPR_FB,color=COLOR_03){ //トライホイール W:WEIGHT(name=NAIN_NWC,angle=NAISUS_NWC,OPTION=6,color=COLOR_03){ W:RLW(angle=-120,power= WHEEL_NW,color=COLOR_03){} E:RLW(angle=-120,power=-WHEEL_NW,color=COLOR_03){} //真ん中 } }} //側面装甲 W:WEIGHT(angle=-165,OPTION=6,color=COLOR_03){ W:WEIGHT(angle= 165,OPTION=6,color=COLOR_01){ N:WEIGHT(angle= 000,OPTION=6,color=COLOR_01){ N:WEIGHT(angle= 090,OPTION=6,color=COLOR_01){ }}}} }}} //X脚・前NE----------------WEIGHT CHIP FRAME COWL TRIM RUDDER JET ARM RLW WHEEL S:WEIGHT(angle=XNE1,OPTION=8,color=COLOR_03){ //車体ジェット N:WEIGHT(angle= 165,OPTION=6,color=COLOR_03){N:JET(angle=-120,power= JET_F,color=COLOR_03){}} //側面装甲 S:WEIGHT(angle=-155 ,OPTION=6,color=COLOR_03){} S:WEIGHT(angle=HATCH_F,OPTION=6,color=COLOR_01){} //ハッチ S:WEIGHT(name=NAME_NE,angle=0,OPTION=6,color=COLOR_01){ //車輪外側 S:WEIGHT(angle=XNE3,OPTION=6,color=COLOR_03){ //内積サスNEIN W:WEIGHT(name=NAIN_NEAIN,angle=NAISUS_NEAIN,OPTION=6,color=COLOR_03){ W:WEIGHT(name=NAIN_NEBIN,angle=NAISUS_NEBIN,OPTION=6,damper=DAM_FB,spring=SPR_FB,color=COLOR_03){ //トライホイール W:WEIGHT(name=NAIN_NECIN,angle=NAISUS_NECIN,OPTION=6,color=COLOR_03){ W:RLW(angle=-120,power=-WHEEL_NE,color=COLOR_03){} E:RLW(angle=-120,power= WHEEL_NE,color=COLOR_03){} //真ん中 } }} } S:WEIGHT(angle=XNE2,OPTION=6,color=COLOR_03){ //内積サスNE W:WEIGHT(name=NAIN_NEA,angle=NAISUS_NEA,OPTION=6,color=COLOR_03){ W:WEIGHT(name=NAIN_NEB,angle=NAISUS_NEB,OPTION=6,damper=DAM_FB,spring=SPR_FB,color=COLOR_03){ //トライホイール W:WEIGHT(name=NAIN_NEC,angle=NAISUS_NEC,OPTION=6,color=COLOR_03){ W:RLW(angle= 120,power= WHEEL_NE,color=COLOR_03){} E:RLW(angle= 120,power=-WHEEL_NE,color=COLOR_03){} //真ん中 } }} //側面装甲 W:WEIGHT(angle= 165,OPTION=6,color=COLOR_03){ W:WEIGHT(angle=-165,OPTION=6,color=COLOR_01){ N:WEIGHT(angle= 000,OPTION=6,color=COLOR_01){ N:WEIGHT(angle=-090,OPTION=6,color=COLOR_01){ }}}} }}} //X脚・後SW----------------WEIGHT CHIP FRAME COWL TRIM RUDDER JET ARM RLW WHEEL S:WEIGHT(angle=XSW1,OPTION=8,color=COLOR_03){ //車体ジェット N:WEIGHT(angle= 165,OPTION=6,color=COLOR_03){N:JET(angle=-120,power=-JET_R,color=COLOR_03){}} //側面装甲 S:WEIGHT(angle=-155 ,OPTION=6,color=COLOR_03){} S:WEIGHT(angle=HATCH_R,OPTION=6,color=COLOR_01){} //ハッチ S:WEIGHT(name=NAME_SW,angle=0,OPTION=6,color=COLOR_01){ //車輪外側 S:WEIGHT(angle=XSW3,OPTION=6,color=COLOR_03){ //内積サスSWIN W:WEIGHT(name=NAIN_SWAIN,angle=NAISUS_SWAIN,OPTION=6,color=COLOR_03){ W:WEIGHT(name=NAIN_SWBIN,angle=NAISUS_SWBIN,OPTION=6,damper=DAM_FB,spring=SPR_FB,color=COLOR_03){ //トライホイール W:WEIGHT(name=NAIN_SWCIN,angle=NAISUS_SWCIN,OPTION=6,color=COLOR_03){ W:RLW(angle=-120,power= WHEEL_SW,color=COLOR_03){} E:RLW(angle=-120,power=-WHEEL_SW,color=COLOR_03){} //真ん中 } }} } S:WEIGHT(angle=XSW2,OPTION=6,color=COLOR_03){ //内積サスSW W:WEIGHT(name=NAIN_SWA,angle=NAISUS_SWA,OPTION=6,color=COLOR_03){ W:WEIGHT(name=NAIN_SWB,angle=NAISUS_SWB,OPTION=6,damper=DAM_RB,spring=SPR_RB,color=COLOR_03){ //トライホイール W:WEIGHT(name=NAIN_SWC,angle=NAISUS_SWC,OPTION=6,color=COLOR_03){ W:RLW(angle= 120,power=-WHEEL_SW,color=COLOR_03){} E:RLW(angle= 120,power= WHEEL_SW,color=COLOR_03){} //真ん中 } }} //側面装甲 W:WEIGHT(angle= 165,OPTION=6,color=COLOR_03){ W:WEIGHT(angle=-165,OPTION=6,color=COLOR_01){ N:WEIGHT(angle= 000,OPTION=6,color=COLOR_01){ N:WEIGHT(angle=-090,OPTION=6,color=COLOR_01){ }}}} }}} //X脚・後SE----------------WEIGHT CHIP FRAME COWL TRIM RUDDER JET ARM RLW WHEEL S:WEIGHT(angle=XSE1,OPTION=8,color=COLOR_03){ //車体ジェット N:WEIGHT(angle=-165,OPTION=6,color=COLOR_03){N:JET(angle= 120,power= JET_R,color=COLOR_03){}} //側面装甲 S:WEIGHT(angle=155 ,OPTION=6,color=COLOR_03){} S:WEIGHT(angle=-HATCH_R,OPTION=6,color=COLOR_01){} //ハッチ S:WEIGHT(name=NAME_SE,angle=0,OPTION=6,color=COLOR_01){ //車輪外側 S:WEIGHT(angle=XSE3,OPTION=6,color=COLOR_03){ //内積サスSEIN W:WEIGHT(name=NAIN_SEAIN,angle=NAISUS_SEAIN,OPTION=6,color=COLOR_03){ W:WEIGHT(name=NAIN_SEBIN,angle=NAISUS_SEBIN,OPTION=6,damper=DAM_FB,spring=SPR_FB,color=COLOR_03){ //トライホイール W:WEIGHT(name=NAIN_SECIN,angle=NAISUS_SECIN,OPTION=6,color=COLOR_03){ W:RLW(angle= 120,power= WHEEL_SE,color=COLOR_03){} E:RLW(angle= 120,power=-WHEEL_SE,color=COLOR_03){} //真ん中 } }} } S:WEIGHT(angle=XSE2,OPTION=6,color=COLOR_03){ //内積サスSE W:WEIGHT(name=NAIN_SEA,angle=NAISUS_SEA,OPTION=6,color=COLOR_03){ W:WEIGHT(name=NAIN_SEB,angle=NAISUS_SEB,OPTION=6,damper=DAM_RB,spring=SPR_RB,color=COLOR_03){ //トライホイール W:WEIGHT(name=NAIN_SEC,angle=NAISUS_SEC,OPTION=6,color=COLOR_03){ W:RLW(angle=-120,power=-WHEEL_SE,color=COLOR_03){} E:RLW(angle=-120,power= WHEEL_SE,color=COLOR_03){} //真ん中 } }} //側面装甲 W:WEIGHT(angle=-165,OPTION=6,color=COLOR_03){ W:WEIGHT(angle= 165,OPTION=6,color=COLOR_01){ N:WEIGHT(angle= 000,OPTION=6,color=COLOR_01){ N:WEIGHT(angle= 090,OPTION=6,color=COLOR_01){ }}}} }}} } }}}} } //コアここまで } //ボディ制作終了 LUA { --初期設定---------------------------------------------------- --初期機体カラー(1-8) BODY_COLOR=1 --上下反転(通常=1 反転=-1) UDR=1 --マウス感度(1.00-2.00) OUT_X=1.00 OUT_Y=1.00 --初期方角維持(OFF=0 ON=1) DIR_SWITCH=1 --方位維持 ANG_SWITCH=1 --角度維持 --最高速度設定 LIMnormal= 50 --通常時 LIMboost = 70 --後部補助ジェット作動時 --ガイドラインの色 COL_R,COL_G,COL_B={},{},{} --A --カラー1 COL_R[1]=255 --赤 COL_G[1]=000 --緑 COL_B[1]=000 --青 --カラー2 COL_R[2]=255 --赤 COL_G[2]=088 --緑 COL_B[2]=000 --青 --B --カラー1 COL_R[3]=000 --赤 COL_G[3]=255 --緑 COL_B[3]=255 --青 --カラー2 COL_R[4]=000 --赤 COL_G[4]=255 --緑 COL_B[4]=180 --青 --メイン------------------------------------------------------ function main() ONLY_ONE() --初回設定 FIRE_CONTROL1() --火器制御1[主砲] FIRE_CONTROL2() --火器制御2[重機関砲] MOUSE_CONTROL() --マウス制御 CHASSIS_CONTROL() --車体制御 NAI_SUSPENSION() --内積連動サスペンション SCOPE_ZOOM() --スコープ視野角 CHANGE_COLOR() --機体カラー LINE_DECORATION() --ライン描画 INFORMATION() --情報 end --初回設定---------------------------------------------------- function ONLY_ONE() if ONE_END~=0 then ONE_END=0 --コア分離 dummy=_SPLIT(CORE2) --方位維持 if DIR_SWITCH==1 then DIR_STOP=0 DIR_MEMO=DIR_MEMO+(-math.deg(_AY(CORE3))) --ON else DIR_STOP=1 DIR_MEMO=DIR_MEMO-(-math.deg(_AY(CORE3))) end --OFF --角度維持 if ANG_SWITCH==1 then _STEP("ANG_PERCENT",1,0.1) --ON else _STEP("ANG_PERCENT",0,0.1) end --OFF end end --情報-------------------------------------------------------- --単語セット OnOff={"ON"} OnOff[0]="OFF" --速度 SPEED=0 pX,pY,pZ={_X(CORE3),_X(CORE3)},{_Y(CORE3),_Y(CORE3)},{_Z(CORE3),_Z(CORE3)} pX[0],pY[0],pZ[0]=_X(CORE3),_Y(CORE3),_Z(CORE3) function INFORMATION() --速度算出 pX,pY,pZ={pX[2],_X(CORE3)},{pY[2],_Y(CORE3)},{pZ[2],_Z(CORE3)} --配列を流す{過去位置,現在位置} pX[0],pY[0],pZ[0]=pX[1]-pX[2],pY[1]-pY[2],pZ[1]-pZ[2] SPEED=math.sqrt(pX[0]*pX[0]+pY[0]*pY[0]+pZ[0]*pZ[0])*100 --情報表示 --常に表示 out(0,"Bedivere") if _TICKS()<320 then out(1,"Earth horn : Wait...",320-_TICKS()) else out(1,"Earth horn : Ready") end out(2," | Shell : ",SHELL) out(3," | Top charge : ",TOP_CHARGE) out(4," | Zoom : ",_ZOOM(0)) out(5," | Keep direction : "..OnOff[DIR_SWITCH]) out(6," | Keep angle : "..OnOff[ANG_SWITCH]) out(7,"Color : "..BODY_COLOR,".",COLOR_NAME) out(8,"Speed : ",SPEED) --一時的に表示 if lock_f==1 then out(10,"<>") end if lock_r==1 then out(11,"<>") end if SUS_SWITCH==1 then out(12,"<>") end if _TICKS()<150 then out(13,"<>") out(14,"[".._FONTG(150-_TICKS(),150,40).."]") end end --火器制御1-[主砲]---------------------------------------------- SHELL,TOP_CHARGE=0,0 FIRE_ORDER=1 A_RECOIL=0 CANNON_C = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} SAFETY = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} function FIRE_CONTROL1() SHELL=0 --砲弾数リセット TOP_CHARGE=0 --トップチャージリセット for LOOP=01,20 do --仮想チャージ if CANNON_C[LOOP]~=1600000 then CANNON_C[LOOP]=CANNON_C[LOOP]+5000 end --発射アーム判定 if LOOP==FIRE_ORDER and CANNON_C[LOOP]==1600000 then --発射アーム処理 _STEP("NSA"..100+LOOP,-90,15) --発射アーム移動 if _G["NSA"..100+LOOP]==-90 then SAFETY[LOOP]=SAFETY[LOOP]+1 end --安全装置 --発射判定 if _ML()==1 and SAFETY[LOOP]>1 and A_RECOIL==0 then --発射 _G["NSP"..100+LOOP]=9999999 A_RECOIL=4 --対反動セット SAFETY[LOOP]=0 CANNON_C[LOOP]=0 FIRE_ORDER=FIRE_ORDER+1 FIRE_ORDER=_LOOP(FIRE_ORDER,1,20) end else _STEP("NSA"..100+LOOP,-180,15) end --待機アーム移動 --アームチェック if CANNON_C[LOOP]==1600000 then SHELL=SHELL+1 --砲弾数 else TOP_CHARGE=math.max(TOP_CHARGE,CANNON_C[LOOP]) end --トップチャージ end --対反動 if A_RECOIL>0 then ARJ2=120000 A_RECOIL=A_RECOIL-1 else ARJ2=0 end --トップチャージ修正 TOP_CHARGE=TOP_CHARGE/16000 if TOP_CHARGE==0 then TOP_CHARGE=100 end end --火器制御2-[重機関砲]---------------------------------------------- JoQUI=06 --第一関節(高速)の数 JoSLO=04 --第二関節(低速)の数 FIRE_ORDER_Hy={2011,2021,2031,2041,2051,2061,2071,2081,2091,2101} FIRE_ORDER_No={1,1,1,1,1,1,1,1,1,1} Safety_int ={0,0,0,0,0,0,0,0,0,0} FIRE_ORDER_H=1 Int_lim,F_speed=2,0 function FIRE_CONTROL2() --変数初期化 Ammo_number_L,ARJ,top_charge=0,0,0 --低速切り替え --アーム探査 for LOOP1=01,JoQUI do --発射アーム探査 for LOOP2=FIRE_ORDER_No[LOOP1],JoSLO do if _TOP(_G["CANON"..2000+LOOP1*10+LOOP2])>=0 and _TOP(_G["CANON"..2000+LOOP1*10+LOOP2])<=1 and _OPTION(_G["CANON"..2000+LOOP1*10+LOOP2])==_E(_G["CANON"..2000+LOOP1*10+LOOP2]) then FIRE_ORDER_Hy[LOOP1]=2000+LOOP1*10+LOOP2 FIRE_ORDER_No[LOOP1]=LOOP2 break end if LOOP2==JoSLO then FIRE_ORDER_No[LOOP1]=1 FIRE_ORDER_Hy[LOOP1]=-1 end end end --角度初期化 for LOOP1=01,JoQUI do for LOOP2=01,JoSLO do _STEP("CANOA"..2000+LOOP1*10+LOOP2,-180,15) end end --発射アーム処理 for LOOP1=01,JoQUI do if FIRE_ORDER_Hy[LOOP1]~=-1 then --角度移動 _STEP("CANOA"..FIRE_ORDER_Hy[LOOP1],-90,30) --安全間隔 if _G["CANOA"..FIRE_ORDER_Hy[LOOP1]]~=-90 and Safety_int[LOOP1]150 then _G["CANOP"..FIRE_ORDER_Hy[FIRE_ORDER_H]]=2000000 _STEP("CANOA"..FIRE_ORDER_Hy[FIRE_ORDER_H],-90,360) Safety_int[FIRE_ORDER_H]=0 ARJ=120000 end --連射モード --if _MR()==1 then F_speed=0 else --高速 --if F_speed==0 then F_speed=1 else F_speed=0 end end --低速 --アーム探査 for LOOP1=FIRE_ORDER_H,JoQUI do --発射アーム探査 if FIRE_ORDER_Hy[LOOP1]~=-1 and Safety_int[LOOP1]==Int_lim then FIRE_ORDER_H=LOOP1 break end if LOOP1==JoQUI then FIRE_ORDER_H=1 end end --装弾 if FIRE_ORDER_Hy[FIRE_ORDER_H]>0 then _STEP("CANOA"..100+FIRE_ORDER_H,-143,360) --高速 _STEP("CANOA"..FIRE_ORDER_Hy[FIRE_ORDER_H],-53,360) --低速 end end --スコープ-------------------------------------------------------- ZOOM_ANG,ZOOM_GRAD,ZOOM_MOVE=55,55,00 function SCOPE_ZOOM() --ズーム操作 if _KEY(12) ==1 and _KEY(10)==1 then ZOOM_GRAD=55 ZOOM_MOVE=math.abs(ZOOM_ANG-ZOOM_GRAD)/4 else --リセット if _KEYDOWN(12)==1 then ZOOM_GRAD=_LOOP(ZOOM_GRAD-12.5,5,55) ZOOM_MOVE=math.abs(ZOOM_ANG-ZOOM_GRAD)/4 elseif _KEYDOWN(10)==1 then ZOOM_GRAD=_LOOP(ZOOM_GRAD+12.5,5,55) ZOOM_MOVE=math.abs(ZOOM_ANG-ZOOM_GRAD)/4 end end _STEP("ZOOM_ANG",ZOOM_GRAD,ZOOM_MOVE) _ZOOM(ZOOM_ANG) end --マウス制御------------------------------------------------------ old_x,old_y=_MX(),_MY() output_x,output_y=0,0 oldout_x,oldout_y=0,0 limit_dir,limit_ang=5,4 --方位維持 DIR_MOUSE =0 --マウス入力 DIR_STOP =1 --ストッパー DIR_MEMO =0 --車体方位記憶 --角度維持 ANG_MOUSE =0 --マウス入力 ANG_REVISE =0 --角度補正値 ANG_PERCENT =1 --アナログスイッチ function MOUSE_CONTROL() --マウス入出力 --加算値取得 output_x,output_y=_MX()-old_x,_MY()-old_y old_x,old_y=_MX(),_MY() --ループリミッター if math.abs(output_x)>=_WIDTH() *0.65 then output_x=oldout_x end if math.abs(output_y)>=_HEIGHT()*0.65 then output_y=oldout_y end oldout_x,oldout_y=output_x,output_y --過去加算値の更新 --出力補正 --初期設定 output_x=output_x*OUT_X output_y=output_y*OUT_Y --ズーム output_x=output_x*(ZOOM_ANG/55) output_y=output_y*_LIMIT((ZOOM_ANG/55),0.5,1) --方位維持 --車体方位取得 DIR_CHASSIS=-math.deg(_AY(CORE3)) --スイッチ切り替え if _KEYDOWN(13)==1 then if DIR_SWITCH==0 then DIR_SWITCH=1 DIR_STOP= 0 DIR_MEMO=DIR_MEMO+DIR_CHASSIS --ON else DIR_SWITCH=0 DIR_STOP= 1 DIR_MEMO=DIR_MEMO-DIR_CHASSIS --OFF end end --マウス入力 DIR_MOUSE = DIR_MOUSE+_LIMIT(output_x*0.10,-limit_dir,limit_dir) --砲塔旋回 _NECK_TURN(DIR_CHASSIS-DIR_CHASSIS*DIR_STOP-DIR_MEMO+DIR_MOUSE) --角度維持 --車体角度取得 ANG_CHASSIS=math.deg(_AX(CORE4)) --スイッチ切り替え if _KEYDOWN(11)==1 then ANG_SWITCH=_LOOP(ANG_SWITCH+1,0,1) end if ANG_SWITCH==1 then _STEP("ANG_PERCENT",1,0.1) --スイッチON else _STEP("ANG_PERCENT",0,0.1) end --スイッチOFF --水平維持 ANG_REVISE=ANG_CHASSIS*ANG_PERCENT --マウス入力(+45=可動min -10=可動max 55=可動範囲の合計) ANG_MOUSE = _LIMIT(ANG_MOUSE+_LIMIT(output_y*0.05,-limit_ang,limit_ang)*UDR, _LIMIT(-(ANG_CHASSIS*ANG_PERCENT+45),-55-ANG_REVISE,00-ANG_REVISE), --可動min _LIMIT(-(ANG_CHASSIS*ANG_PERCENT-10), 00-ANG_REVISE,55-ANG_REVISE)) --可動max --砲塔上下 _NECK_SWING(ANG_REVISE+ANG_MOUSE) --傾度維持 NECK_TWIST=90+(90-math.deg(math.acos(_AZ(CORE4))))*ANG_PERCENT end --砲塔上下(角度指定) ※瞬間移動 function _NECK_SWING(nEcK) _STEP("NECK_ANG",90+nEcK,3.8) end --砲塔旋回(角度指定) ※瞬間移動 function _NECK_TURN(nEcK) XNW1,XNE1,XSW1,XSE1=-135+nEcK,135+nEcK,-045+nEcK,045+nEcK CORE3_DIR=nEcK end --車体制御------------------------------------------------------ CHASSIS_POWER = 400000 ASSIST_POWER = 10000 ASSIST_STOP = 0 AXEL_W,AXEL_E=0,0 AXEL_max=00 AXEL_min=0 UNLOCK=0 ANCHOR_BASE=-1.57079632679489662-_AY(CORE3) --未来予測変数 _180pi=57.2957795130823209 * 6.0 --事前計算*予測修正 CORE3old={-_ZX(CORE3),0,-_ZZ(CORE3)} --過去ベクトル function CHASSIS_CONTROL() --アンロック処理 if _H(CORE3)<=0.70 and UNLOCK<15 then UNLOCK=UNLOCK+1 end --アシスト停止判定 if UNLOCK<15 or --UNLOCKが15未満 _KEY(14)+_KEY(16)>0 or --マニュアルステアが作動している SUS_UD==1 --サスペンションが上がっている then ASSIST_STOP=1 --停止 ST_ASSIST,A_GAP=0,0 ANCHOR_BASE=-1.57079632679489662-_AY(CORE3) else ASSIST_STOP=0 end --作動 --水平前後移動速度 LEVcx,LEVcy,LEVcz=_SEI(_ZX(CORE3), 0, _ZZ(CORE3)) LEVvx,LEVvy,LEVvz=_SEI(pX[0], 0, pZ[0]) LEV_SPEED=-_NAI(LEVcx,LEVcy,LEVcz,LEVvx,LEVvy,LEVvz)*SPEED --車輪制御 --カウンターステア if ASSIST_STOP==0 then xxx,COUNTER,xxx=_GAI(pX[0],0,pZ[0],_ZX(CORE3),0, _ZZ(CORE3)) COUNTER=_LIMIT(math.rad((math.abs(LEV_SPEED)-SPEED)*_SGN(COUNTER))*2,-0.50,0.50) --リミットで制限 else COUNTER=0 end if math.abs(COUNTER)>0.01 then AXEL_min=_LIMIT(AXEL_min-0.001,-0.100, 0.100) else AXEL_min=0.00 end --埒が明かない時の強引加速(速度制限無視) --制限速度設定 if lock_r==1 then AXEL_max=LIMboost else AXEL_max=LIMnormal end --後部ジェットは作動しているか? --前進 if _KEY(15)==1 then if LEV_SPEED <-AXEL_max then AXEL_W,AXEL_E=AXEL_min,AXEL_min else AXEL_W,AXEL_E=_LIMIT(AXEL_W-0.03,-1, 1), _LIMIT(AXEL_E-0.03,-1, 1) end end --後退 if _KEY(08)==1 then COUNTER=-COUNTER if LEV_SPEED > AXEL_max then AXEL_W,AXEL_E=-AXEL_min,-AXEL_min else AXEL_W,AXEL_E=_LIMIT(AXEL_W+0.03,-1, 1), _LIMIT(AXEL_E+0.03,-1, 1) end end --リセット if _KEYDOWN(15)+_KEYDOWN(8)>0 or _KEYUP(15)+_KEYUP(8)>0 then AXEL_W=0 AXEL_E=0 AXEL_min=0 end --前後移動キーが変動する毎にリセットする --ステアリングアシスト C3VECx,C3VECy,C3VECz=-_ZX(CORE3),0,-_ZZ(CORE3) --車体ベクトル・現在 FUTUc3x,FUTUc3y,FUTUc3z=_FORECAST(C3VECx,C3VECy,C3VECz,CORE3old[1],CORE3old[2],CORE3old[3]) --車体ベクトル・未来 CORE3old={C3VECx,C3VECy,C3VECz} --現在のベクトルを記憶 if ASSIST_STOP==0 then --基準ベクトル移動 if _KEY(7)==1 then ANCHOR_BASE=ANCHOR_BASE+0.0285 end if _KEY(9)==1 then ANCHOR_BASE=ANCHOR_BASE-0.0285 end A_GAP=_GAP2(math.cos(ANCHOR_BASE+COUNTER),0,math.sin(ANCHOR_BASE+COUNTER),FUTUc3x, FUTUc3y, FUTUc3z) --基準ベクトル(+カウンターステア)と未来ベクトルの角度差 ST_ASSIST=ASSIST_POWER*(1+_LIMIT(math.abs(A_GAP),0,7)) --角度差による旋回加速補正 end --出力総合 WHEEL_NW=ST_ASSIST*A_GAP+CHASSIS_POWER*AXEL_W WHEEL_NE=ST_ASSIST*-A_GAP+CHASSIS_POWER*AXEL_E WHEEL_SW=ST_ASSIST*A_GAP+CHASSIS_POWER*AXEL_W WHEEL_SE=ST_ASSIST*-A_GAP+CHASSIS_POWER*AXEL_E --補助ジェット制御 --連続キー入力 M_in=0 if _KEYDOWN(15)==1 then M_in=1 end if _KEYDOWN(08)==1 then M_in=2 end MEMORY_FLOW(M_in) --補助ジェット・前 if MEMORY_SEARCH(2)>=2 or lock_f==1 then lock_f=1 --ロック _STEP("HATCH_F",60,10) --ハッチ開け if HATCH_F<=60 then JET_F= 400000 end --ジェット作動 if _KEY(08)==0 then lock_f=0 end end --ロック解除 if lock_f==0 then _STEP("HATCH_F",90,5) --ハッチ閉め JET_F=0 end --ジェット停止 --補助ジェット・後 if MEMORY_SEARCH(1)>=2 or lock_r==1 then lock_r=1 --ロック _STEP("HATCH_R",60,10) --ハッチ開け if HATCH_R<=60 then JET_R=-400000 end --ジェット作動 if _KEY(15)==0 then lock_r=0 end end --ロック解除 if lock_r==0 then _STEP("HATCH_R",90,5) --ハッチ閉め JET_R=0 end --ジェット停止 end --連続入力(同時入力不可) MEMOext=8 --メモリーの範囲 MEMO={} MEMO[0]=0 for loop=1,MEMOext do MEMO[loop]=0 end --配列変数初期化 function MEMORY_FLOW(K_in) --記憶流し(メモリーに流す数値) MEMO[0]=0 if K_in~=nil then MEMO[0]=K_in end for loop=MEMOext,1,-1 do MEMO[loop]=MEMO[loop-1] end end --記憶流し function MEMORY_SEARCH(K_no) --数値検索(数値K_noがメモリーにいくつあるか調べる) no_CounT=0 for loop=1,MEMOext do if MEMO[loop]==K_no then no_CounT=no_CounT+1 end end --数値検索 return no_CounT end --内積連動サスペンション---------------------------------------- LimA_min,LimA_max=-8, 8 --1フレームの移動範囲制限(NAISUS_A) LimC_min,LimC_max=-8, 8 --1フレームの移動範囲制限(NAISUS_C) SUS_SWITCH=0 SUS_UDp = 200 SUS_UDm =-200 SUS_UD = 0 SUS_STOP= 0 function NAI_SUSPENSION() --ホイール昇降(テスト) --if _KEY(0)==1 then NAISUS_SEB=NAISUS_SEB+1 end --if _KEY(1)==1 then NAISUS_SEB=NAISUS_SEB-1 end --サスペンション上げ下げ if _KEYDOWN(6)==1 then SUS_SWITCH=_LOOP(SUS_SWITCH+1,0,1) SUS_STOP=0 end if SUS_SWITCH==0 and SUS_STOP==0 then --下げ if SUS_UDm==-200 then SUS_STOP=1 end SUS_UD=0 _STEP("SUS_UDm",-200,2) _STEP("SUS_UDp", 200,2) elseif SUS_SWITCH==1 and SUS_STOP==0 then --上げ if SUS_UDm==-240 then SUS_STOP=1 SUS_UD=1 end _STEP("SUS_UDm",-238,2) _STEP("SUS_UDp", 238,2) end --移動 if SUS_STOP==0 then --out NAISUS_NWB=SUS_UDm NAISUS_NEB=SUS_UDp NAISUS_SWB=SUS_UDp NAISUS_SEB=SUS_UDm --in NAISUS_NWBIN=SUS_UDp NAISUS_NEBIN=SUS_UDm NAISUS_SWBIN=SUS_UDm NAISUS_SEBIN=SUS_UDp end --車高によるライン照準のズレを修正 CENTER_ANG=-106.00+0.8*((NAISUS_NWBIN-200)/(240-200)) --連動計算NW --A a=90+(NAISUS_NWB+180)/2-_NAIns(_XX(NAIN_NWB),_XY(NAIN_NWB),_XZ(NAIN_NWB), -_XX(NAME_NW),-_XY(NAME_NW),-_XZ(NAME_NW)) NAISUS_NWA=NAISUS_NWA+_LIMIT(a,LimA_min,LimA_max) --C b=30-_NAIns(_YX(NAIN_NWC),_YY(NAIN_NWC),_YZ(NAIN_NWC), _XX(NAME_NW),_XY(NAME_NW),_XZ(NAME_NW)) NAISUS_NWC=NAISUS_NWC-_LIMIT(b,LimC_min,LimC_max) --連動計算NWIN --A a=90-(NAISUS_NWBIN-180)/2-_NAIns(_XX(NAIN_NWBIN),_XY(NAIN_NWBIN),_XZ(NAIN_NWBIN), -_XX(NAME_NW),-_XY(NAME_NW),-_XZ(NAME_NW)) NAISUS_NWAIN=NAISUS_NWAIN-_LIMIT(a,LimA_min,LimA_max) --C b=150-_NAIns(_YX(NAIN_NWCIN),_YY(NAIN_NWCIN),_YZ(NAIN_NWCIN), _XX(NAME_NW),_XY(NAME_NW),_XZ(NAME_NW)) NAISUS_NWCIN=NAISUS_NWCIN-_LIMIT(b,LimC_min,LimC_max) --連動計算NE --A a=90-(NAISUS_NEB-180)/2-_NAIns(_XX(NAIN_NEB),_XY(NAIN_NEB),_XZ(NAIN_NEB), -_XX(NAME_NE),-_XY(NAME_NE),-_XZ(NAME_NE)) NAISUS_NEA=NAISUS_NEA-_LIMIT(a,LimA_min,LimA_max) --C b=150-_NAIns(_YX(NAIN_NEC),_YY(NAIN_NEC),_YZ(NAIN_NEC), _XX(NAME_NE),_XY(NAME_NE),_XZ(NAME_NE)) NAISUS_NEC=NAISUS_NEC-_LIMIT(b,LimC_min,LimC_max) --連動計算NEIN --A a=90+(NAISUS_NEBIN+180)/2-_NAIns(_XX(NAIN_NEBIN),_XY(NAIN_NEBIN),_XZ(NAIN_NEBIN), -_XX(NAME_NE),-_XY(NAME_NE),-_XZ(NAME_NE)) NAISUS_NEAIN=NAISUS_NEAIN+_LIMIT(a,LimA_min,LimA_max) --C b=30-_NAIns(_YX(NAIN_NECIN),_YY(NAIN_NECIN),_YZ(NAIN_NECIN), _XX(NAME_NE),_XY(NAME_NE),_XZ(NAME_NE)) NAISUS_NECIN=NAISUS_NECIN-_LIMIT(b,LimC_min,LimC_max) --連動計算SW --A a=90-(NAISUS_SWB-180)/2-_NAIns(_XX(NAIN_SWB),_XY(NAIN_SWB),_XZ(NAIN_SWB), -_XX(NAME_SW),-_XY(NAME_SW),-_XZ(NAME_SW)) NAISUS_SWA=NAISUS_SWA-_LIMIT(a,LimA_min,LimA_max) --C b=150-_NAIns(_YX(NAIN_SWC),_YY(NAIN_SWC),_YZ(NAIN_SWC), _XX(NAME_SW),_XY(NAME_SW),_XZ(NAME_SW)) NAISUS_SWC=NAISUS_SWC-_LIMIT(b,LimC_min,LimC_max) --連動計算SWIN --A a=90+(NAISUS_SWBIN+180)/2-_NAIns(_XX(NAIN_SWBIN),_XY(NAIN_SWBIN),_XZ(NAIN_SWBIN), -_XX(NAME_SW),-_XY(NAME_SW),-_XZ(NAME_SW)) NAISUS_SWAIN=NAISUS_SWAIN+_LIMIT(a,LimC_min,LimC_max) --C b=30-_NAIns(_YX(NAIN_SWCIN),_YY(NAIN_SWCIN),_YZ(NAIN_SWCIN), _XX(NAME_SW),_XY(NAME_SW),_XZ(NAME_SW)) NAISUS_SWCIN=NAISUS_SWCIN-_LIMIT(b,LimC_min,LimC_max) --連動計算SE --A a=90+(NAISUS_SEB+180)/2-_NAIns(_XX(NAIN_SEB),_XY(NAIN_SEB),_XZ(NAIN_SEB), -_XX(NAME_SE),-_XY(NAME_SE),-_XZ(NAME_SE)) NAISUS_SEA=NAISUS_SEA+_LIMIT(a,LimA_min,LimA_max) --C b=30-_NAIns(_YX(NAIN_SEC),_YY(NAIN_SEC),_YZ(NAIN_SEC), _XX(NAME_SE),_XY(NAME_SE),_XZ(NAME_SE)) NAISUS_SEC=NAISUS_SEC-_LIMIT(b,LimC_min,LimC_max) --連動計算SWIN --A a=90-(NAISUS_SEBIN-180)/2-_NAIns(_XX(NAIN_SEBIN),_XY(NAIN_SEBIN),_XZ(NAIN_SEBIN), -_XX(NAME_SE),-_XY(NAME_SE),-_XZ(NAME_SE)) NAISUS_SEAIN=NAISUS_SEAIN-_LIMIT(a,LimA_min,LimA_max) --C b=150-_NAIns(_YX(NAIN_SECIN),_YY(NAIN_SECIN),_YZ(NAIN_SECIN), _XX(NAME_SE),_XY(NAME_SE),_XZ(NAME_SE)) NAISUS_SECIN=NAISUS_SECIN-_LIMIT(b,LimC_min,LimC_max) --チェッカー(テスト) --out(0,a) --out(1,b) end --カスタム内積(正規化しない+ACOS変換+DEGREE変換) function _NAIns(NAi1,NAi2,NAi3,NAi4,NAi5,NAi6) return math.acos((NAi1*NAi4+NAi2*NAi5+NAi3*NAi6))*57.2957795130823209 end --ライン表示------------------------------------------------------- ANCHOR_SWITCH=1 LINE_SWITCH=1 VEC_ADJUST=0.70 function LINE_DECORATION() --方位アンカー if _KEYDOWN(0) ==1 then ANCHOR_SWITCH=_LOOP(ANCHOR_SWITCH+1,0,1) end if ANCHOR_SWITCH==1 then DIRECTION_ANCHOR() end --ライン描画判定 if _KEYDOWN(1) ==1 then LINE_SWITCH=_LOOP(LINE_SWITCH+1,0,1) end if LINE_SWITCH ==1 then --ライン照準 _3D_SIGHT() --計器類 T_KOMPAS ( 0.255, -0.69, 0.145, CORE2, CORE3, ANCHOR_BASE) --コンパス (位置X,位置Y,大きさ,砲塔コア,車体コア ,方位アンカー) ARM_GAUGE (-0.255, -0.69, 0.155, SHELL, 20, TOP_CHARGE/100) --アームゲージ(位置X,位置Y,大きさ,弾数 ,弾の最大数,トップチャージ) ET_CETERA (-0.000, -0.69, 0.150) --エトセトラ (位置X,位置Y,大きさ) end end --方位アンカー function DIRECTION_ANCHOR() --補正軸作成(車体の傾きを考慮した方位固定ベクトル) BaseXX,BaseXY,BaseXZ=_GAI2(0,0,1,_XX(CORE3),_XY(CORE3),_XZ(CORE3)) --X BaseZX,BaseZY,BaseZZ=_GAI2(1,0,0,_XX(CORE3),_XY(CORE3),_XZ(CORE3)) --Z --補正軸を基にアンカー位置を計算 Syn_XL,Syn_YL,Syn_ZL=ANCHOR_POINT(ANCHOR_BASE+0.1, 08) --左 Syn_XS,Syn_YS,Syn_ZS=ANCHOR_POINT(ANCHOR_BASE, 11) --中央 Syn_XR,Syn_YR,Syn_ZR=ANCHOR_POINT(ANCHOR_BASE-0.1, 08) --右 --アンカー描画 dummy=_SETCOLOR(GRADATION(2)) dummy=_MOVE3D(_X(CORE4),_Y(CORE4),_Z(CORE4)) dummy=_LINE3D(_X(CORE4)+Syn_XS,_Y(CORE4)+Syn_YS,_Z(CORE4)+Syn_ZS) dummy=_LINE3D(_X(CORE4)+Syn_XR,_Y(CORE4)+Syn_YR,_Z(CORE4)+Syn_ZR) dummy=_LINE3D(_X(CORE4)+Syn_XL,_Y(CORE4)+Syn_YL,_Z(CORE4)+Syn_ZL) dummy=_LINE3D(_X(CORE4)+Syn_XS,_Y(CORE4)+Syn_YS,_Z(CORE4)+Syn_ZS) end --ライン照準 LINE_LENGTH=1250 --速度2 pX2,pY2,pZ2={_X(CENTER),_X(CENTER)},{_Y(CENTER),_Y(CENTER)},{_Z(CENTER),_Z(CENTER)} pX2[0],pY2[0],pZ2[0]=_X(CORE2),_Y(CORE2),_Z(CORE2) function _3D_SIGHT() --速度算出2 pX2,pY2,pZ2={pX2[2],_X(CENTER)},{pY2[2],_Y(CENTER)},{pZ2[2],_Z(CENTER)} --配列を流す{過去位置,現在位置} pX2[0],pY2[0],pZ2[0]=pX2[1]-pX2[2],pY2[1]-pY2[2],pZ2[1]-pZ2[2] --移動ベクトル VEC_X=(_ZX(CENTER)*LINE_LENGTH-pX2[0]*67) VEC_Y=(_ZY(CENTER)*LINE_LENGTH-pY2[0]*67) VEC_Z=(_ZZ(CENTER)*LINE_LENGTH-pZ2[0]*67) --表示 dummy=_SETCOLOR(GRADATION(1)) dummy=_MOVE3D(_X(LEFT),_Y(LEFT),_Z(LEFT)) dummy=_LINE3D((_X(LEFT))+VEC_X,(_Y(LEFT))+VEC_Y,(_Z(LEFT))+VEC_Z) end --アームゲージ(位置X,位置Y,大きさ,弾数,最大段数,トップチャージ) wait_len=1.26 tcX,tcYin,tcYout=0.088,1.09,1.34 ammo_pi=math.pi/20 function ARM_GAUGE(px,py,size,ammo,ammo_max,charge) --トップチャージ --枠 if ammoammo_max/2 then dummy=_SETCOLOR(GRADATION(2)) else dummy=_SETCOLOR(GRADATION(1)) end dummy=_MOVE2D(0.8*size+px,py) dummy=_LINE2D(1.0*size+px,py) --下 if ammo>0 then dummy=_SETCOLOR(GRADATION(2)) else dummy=_SETCOLOR(GRADATION(1)) end dummy=_MOVE2D(px,-0.8*size+py) dummy=_LINE2D(px,-1.0*size+py) --針 --描画 DKxy=charge*math.pi dummy=_SETCOLOR(GRADATION(0)) dummy=_MOVE2D(math.sin(DKxy )*size*tcYin +px, -math.cos(DKxy )*size*tcYin +py) dummy=_LINE2D(math.sin(DKxy+tcX)*size*tcYout+px, -math.cos(DKxy+tcX)*size*tcYout+py) dummy=_LINE2D(math.sin(DKxy-tcX)*size*tcYout+px, -math.cos(DKxy-tcX)*size*tcYout+py) dummy=_LINE2D(math.sin(DKxy )*size*tcYin +px, -math.cos(DKxy )*size*tcYin +py) --ウェイトライン lox,loy=-0.10,-0.085 --下線 if _TICKS()<150 then dummy=_SETCOLOR(GRADATION(1)) dummy=_MOVE2D( px+lox, py+loy) dummy=_LINE2D(wait_len*size+px+lox, py+loy) end --上線 dummy=_SETCOLOR(GRADATION(2)) dummy=_MOVE2D( px+lox, py+loy) dummy=_LINE2D(wait_len*size*_LIMIT(_TICKS(),0,150)/150+px+lox, py+loy) --弾数 --色 if (_TICKS()>320 and ammo>0) or (_TICKS()<=320 and _TICKS()>150) then dummy=_SETCOLOR(GRADATION(2)) else dummy=_SETCOLOR(GRADATION(0)) end --描画 lox,loy=-0.60, 0.51 D_FONT(_FIG(SHELL+100,2), (0.0+lox)*size+px, (loy)*size+py, 5*size, 4.5*size) --10の位 D_FONT(_FIG(SHELL+100,3), (0.7+lox)*size+px, (loy)*size+py, 5*size, 4.5*size) -- 1の位 --ゲージ表示 if ammo>0 then dummy=_SETCOLOR(GRADATION(3)) for Loop=0,math.pi*(ammo/ammo_max),ammo_pi do Dir_X =math.sin(Loop) Dir_Y =math.cos(Loop) Dir_X2=math.sin(Loop+ammo_pi) Dir_Y2=math.cos(Loop+ammo_pi) dummy=_MOVE2D(Dir_X *size+px, -Dir_Y *size+py) dummy=_LINE2D(Dir_X2*size+px, -Dir_Y2*size+py) end end --スコープ --弧 dummy=_SETCOLOR(GRADATION(0)) for Loop=0,1.57079632679489662,0.174532925199432958 do Dir_X =-math.cos(Loop-0.78539816339744831) Dir_Y = math.sin(Loop-0.78539816339744831) Dir_X2=-math.cos(Loop-0.610865238198015352) Dir_Y2= math.sin(Loop-0.610865238198015352) dummy=_MOVE2D(Dir_X *size+px, Dir_Y *size+py) dummy=_LINE2D(Dir_X2*size+px, Dir_Y2*size+py) end --針(目標) if ZOOM_GRAD~=ZOOM_ANG then RY2=math.rad((ZOOM_GRAD-10)*2+45) Dir_X=math.sin(RY2)*size Dir_Y=math.cos(RY2)*size dummy=_SETCOLOR(GRADATION(0)) dummy=_MOVE2D(-Dir_X +px, Dir_Y +py) dummy=_LINE2D(-Dir_X*1.30+px, Dir_Y*1.30+py) end --針(現在) RY2=math.rad((ZOOM_ANG-10)*2+45) Dir_X=math.sin(RY2)*size Dir_Y=math.cos(RY2)*size dummy=_SETCOLOR(GRADATION(2)) dummy=_MOVE2D(-Dir_X +px, Dir_Y +py) dummy=_LINE2D(-Dir_X*1.30+px, Dir_Y*1.30+py) end --戦車用コンパス(位置X,位置Y,大きさ,砲塔コア,車体コア,方位アンカー) ancX,ancY=0.085,1.22 function T_KOMPAS(px,py,size,coreU,coreD,anc) --リング描画 dummy=_SETCOLOR(GRADATION(1)) for Loop=0,6.28318530717958648,0.314159265358979324 do Dir_X =math.cos(Loop) Dir_Y =math.sin(Loop) Dir_X2=math.cos(Loop+0.314159265358979324) Dir_Y2=math.sin(Loop+0.314159265358979324) dummy=_MOVE2D(Dir_X *size+px, Dir_Y *size+py) dummy=_LINE2D(Dir_X2*size+px, Dir_Y2*size+py) end --砲身方位 size_B=size*4.5 dummy=_SETCOLOR(GRADATION(0)) dummy=_MOVE2D(px+0.000*size_B, py+0.195*size_B) dummy=_LINE2D(px-0.024*size_B, py+0.135*size_B) dummy=_LINE2D(px+0.024*size_B, py+0.135*size_B) dummy=_LINE2D(px+0.000*size_B, py+0.195*size_B) --車体方位 RY=_RY(coreD,coreU) Dir_X=math.sin(RY)*size Dir_Y=math.cos(RY)*size dummy=_SETCOLOR(GRADATION(1)) dummy=_MOVE2D(Dir_X*0.55+px, Dir_Y*0.55+py) dummy=_LINE2D(Dir_X*0.80+px, Dir_Y*0.80+py) --車体角度 --弧 dummy=_SETCOLOR(GRADATION(0)) for Loop=0,0.872664625997164788,0.0959931088596881267 do Dir_X =math.cos(Loop-0.174532925199432958) Dir_Y =math.sin(Loop-0.174532925199432958) Dir_X2=math.cos(Loop-0.0785398163397448313) Dir_Y2=math.sin(Loop-0.0785398163397448313) dummy=_MOVE2D(Dir_X *size*1.30+px, Dir_Y *size*1.30+py) dummy=_LINE2D(Dir_X2*size*1.30+px, Dir_Y2*size*1.30+py) end --水平線 dummy=_MOVE2D(1.20*size+px,py) dummy=_LINE2D(1.55*size+px,py) --針 RY2=-math.rad(NECK_ANG) Dir_X=math.sin(RY2)*size Dir_Y=math.cos(RY2)*size dummy=_SETCOLOR(GRADATION(2)) dummy=_MOVE2D(-Dir_X*1.20+px, Dir_Y*1.20+py) dummy=_LINE2D(-Dir_X*1.55+px, Dir_Y*1.55+py) --方位アンカー size_C=size*1.16 pxy=anc+_AY(coreU)+3.14159265358979324 dummy=_SETCOLOR(GRADATION(0)) dummy=_MOVE2D(math.cos(pxy )*size_C +px, math.sin(pxy )*size_C +py) dummy=_LINE2D(math.cos(pxy+ancX)*size_C*ancY+px, math.sin(pxy+ancX)*size_C*ancY+py) dummy=_LINE2D(math.cos(pxy-ancX)*size_C*ancY+px, math.sin(pxy-ancX)*size_C*ancY+py) dummy=_LINE2D(math.cos(pxy )*size_C +px, math.sin(pxy )*size_C +py) --マニュアルステア --弧 size_D=size*0.5 dummy=_SETCOLOR(GRADATION(2)) for Loop=0.78539816339744831, 2.19911485751285527, 0.157079632679489662 do Loop_RY =Loop-RY Loop_RY2=Loop_RY+0.157079632679489662 Dir_X =math.cos(Loop_RY ) Dir_Y =math.sin(Loop_RY ) Dir_X2=math.cos(Loop_RY2) Dir_Y2=math.sin(Loop_RY2) dummy=_MOVE2D(Dir_X *size_D+px, Dir_Y *size_D+py) dummy=_LINE2D(Dir_X2*size_D+px, Dir_Y2*size_D+py) end --針 RY2=RY-math.rad(XNE3-45) Dir_X=math.sin(RY2)*size Dir_Y=math.cos(RY2)*size dummy=_SETCOLOR(GRADATION(1)) dummy=_MOVE2D(Dir_X*0.00+px, Dir_Y*0.00+py) dummy=_LINE2D(Dir_X*0.50+px, Dir_Y*0.50+py) --東西南北 dummy=_SETCOLOR(GRADATION(2)) --東 Dir_X=math.cos(_AY(coreU))*size Dir_Y=math.sin(_AY(coreU))*size LET_E(Dir_X+px, Dir_Y+py, 0.4, 0.4) --西 Dir_X=-math.cos(_AY(coreU))*size Dir_Y=-math.sin(_AY(coreU))*size LET_W(Dir_X+px, Dir_Y+py, 0.4, 0.4) --南 Dir_X=-math.sin(-_AY(coreU))*size Dir_Y=-math.cos(-_AY(coreU))*size LET_S(Dir_X+px, Dir_Y+py, 0.4, 0.4) --北 Dir_X=math.sin(-_AY(coreU))*size Dir_Y=math.cos(-_AY(coreU))*size dummy=_SETCOLOR(GRADATION(3)) LET_N(Dir_X+px, Dir_Y+py, 0.4, 0.4) end --エトセトラ(位置X,位置Y,大きさ) function ET_CETERA(px,py,size) --補助ジェット --前部 if lock_f==1 then dummy=_SETCOLOR(GRADATION(0)) dummy=_MOVE2D( 0.055*size+px, 1.40*size+py) dummy=_LINE2D( 0.055*size+px, 0.50*size+py) dummy=_LINE2D( 0.450*size+px, 0.90*size+py) dummy=_SETCOLOR(GRADATION(1)) dummy=_MOVE2D( 0.055*size+px, 0.70*size+py) dummy=_LINE2D( 0.450*size+px, 1.10*size+py) end --後部ジェット if lock_r==1 then dummy=_SETCOLOR(GRADATION(0)) dummy=_MOVE2D(-0.450*size+px, 0.90*size+py) dummy=_LINE2D(-0.055*size+px, 1.40*size+py) dummy=_LINE2D(-0.055*size+px, 0.50*size+py) dummy=_SETCOLOR(GRADATION(1)) dummy=_MOVE2D(-0.450*size+px, 0.70*size+py) dummy=_LINE2D(-0.055*size+px, 1.20*size+py) end --車体固定 if SUS_SWITCH==1 then dummy=_SETCOLOR(GRADATION(2)) dummy=_MOVE2D( 0.600*size+px,-1.25*size+py) dummy=_LINE2D(-0.600*size+px,-1.25*size+py) dummy=_SETCOLOR(GRADATION(0)) dummy=_MOVE2D( 0.055*size+px,-0.40*size+py) dummy=_LINE2D( 0.055*size+px,-1.16*size+py) dummy=_LINE2D( 0.490*size+px,-0.90*size+py) dummy=_MOVE2D(-0.055*size+px,-0.40*size+py) dummy=_LINE2D(-0.055*size+px,-1.16*size+py) dummy=_LINE2D(-0.490*size+px,-0.90*size+py) end end --ラインフォント(表示位置X,表示位置Y,サイズX,サイズY) function LET_E(px,py,sx,sy) dummy=_MOVE2D(px+0.05*sx ,py+0.05*sy) dummy=_LINE2D(px-0.05*sx ,py+0.05*sy) dummy=_LINE2D(px-0.05*sx ,py-0.05*sy) dummy=_LINE2D(px+0.05*sx ,py-0.05*sy) dummy=_MOVE2D(px-0.05*sx ,py) dummy=_LINE2D(px+0.025*sx,py) end function LET_N(px,py,sx,sy) dummy=_MOVE2D(px+0.05*sx,py+0.05*sy) dummy=_LINE2D(px+0.05*sx,py-0.05*sy) dummy=_MOVE2D(px-0.05*sx,py+0.05*sy) dummy=_LINE2D(px-0.05*sx,py-0.05*sy) dummy=_MOVE2D(px+0.05*sx,py-0.05*sy) dummy=_LINE2D(px-0.05*sx,py+0.05*sy) end function LET_S(px,py,sx,sy) dummy=_MOVE2D(px+0.05*sx,py+0.05*sy) dummy=_LINE2D(px-0.05*sx,py+0.05*sy) dummy=_LINE2D(px-0.05*sx,py-0.00*sy) dummy=_LINE2D(px+0.05*sx,py-0.00*sy) dummy=_LINE2D(px+0.05*sx,py-0.05*sy) dummy=_LINE2D(px-0.05*sx,py-0.05*sy) end function LET_W(px,py,sx,sy) dummy=_MOVE2D(px-0.05 *sx, py+0.05*sy) dummy=_LINE2D(px-0.025*sx, py-0.05*sy) dummy=_LINE2D(px-0.00 *sx, py+0.04*sy) dummy=_LINE2D(px+0.025*sx, py-0.05*sy) dummy=_LINE2D(px+0.05 *sx, py+0.05*sy) end --Dフォント(表示する数値0-9,表示位置X,表示位置Y,サイズX,サイズY) --フォントデータ font_0,font_1,font_2,font_3,font_4={1,1,1,0,1,1,1},{0,0,0,0,0,1,1},{0,1,1,1,1,1,0},{0,0,1,1,1,1,1},{1,0,0,1,0,1,1} font_5,font_6,font_7,font_8,font_9={1,0,1,1,1,0,1},{1,1,1,1,1,0,1},{1,0,1,0,0,1,1},{1,1,1,1,1,1,1},{1,0,1,1,1,1,1} font_F={font_0,font_1,font_2,font_3,font_4,font_5,font_6,font_7,font_8,font_9} function D_FONT(num,px,py,sx,sy) num=math.floor(_LIMIT(num+1,1,10)) if font_F[num][1]>0 then dummy=_MOVE2D(px,py) dummy=_LINE2D(px,-0.1*sy+py) end if font_F[num][2]>0 then dummy=_MOVE2D(px,-0.1*sy+py) dummy=_LINE2D(px,-0.2*sy+py) end if font_F[num][3]>0 then dummy=_MOVE2D(px,py) dummy=_LINE2D(0.1*sx+px,py) end if font_F[num][4]>0 then dummy=_MOVE2D(px,-0.1*sy+py) dummy=_LINE2D(0.1*sx+px,-0.1*sy+py) end if font_F[num][5]>0 then dummy=_MOVE2D(px,-0.2*sy+py) dummy=_LINE2D(0.1*sx+px,-0.2*sy+py) end if font_F[num][6]>0 then dummy=_MOVE2D(0.1*sx+px, py) dummy=_LINE2D(0.1*sx+px,-0.1*sy+py) end if font_F[num][7]>0 then dummy=_MOVE2D(0.1*sx+px,-0.1*sy+py) dummy=_LINE2D(0.1*sx+px,-0.2*sy+py) end end --グラデーション計算(返す色番号 [0-x]) G_SPEED=6 --変化速度 G_RETURN={} --計算結果格納用 OLD_TICKS=-1 --過去TICKS function GRADATION(color_face) if OLD_TICKS~=_TICKS() then --グラデーション計算とOLD_TICKSの更新(最初に呼ばれた時だけ実行する) G_TICKS=_TICKS()/G_SPEED OLD_TICKS=_TICKS() G_SIN,G_COS=math.abs(math.sin(G_TICKS)),math.abs(math.cos(G_TICKS)) --グラデーション計算 --A G_RETURN[0]=_CONCOL(math.max(COL_R[1]*G_SIN,COL_R[2]*G_COS), math.max(COL_G[1]*G_SIN,COL_G[2]*G_COS), math.max(COL_B[1]*G_SIN,COL_B[2]*G_COS)) G_RETURN[1]=_CONCOL(math.max(COL_R[1]*G_COS,COL_R[2]*G_SIN), math.max(COL_G[1]*G_COS,COL_G[2]*G_SIN), math.max(COL_B[1]*G_COS,COL_B[2]*G_SIN)) --B G_RETURN[2]=_CONCOL(math.max(COL_R[3]*G_SIN,COL_R[4]*G_COS), math.max(COL_G[3]*G_SIN,COL_G[4]*G_COS), math.max(COL_B[3]*G_SIN,COL_B[4]*G_COS)) G_RETURN[3]=_CONCOL(math.max(COL_R[3]*G_COS,COL_R[4]*G_SIN), math.max(COL_G[3]*G_COS,COL_G[4]*G_SIN), math.max(COL_B[3]*G_COS,COL_B[4]*G_SIN)) end return G_RETURN[color_face] end --補正軸を基にアンカー位置を計算(ANCHOR_BASE,距離倍率) function ANCHOR_POINT(aNc_bAse,aNc_leN) aNc_bAse=-aNc_bAse ABsin,ABcos=math.sin(aNc_bAse)*aNc_leN,math.cos(aNc_bAse)*aNc_leN return BaseZX*ABsin+BaseXX*ABcos,BaseZY*ABsin+BaseXY*ABcos,BaseZZ*ABsin+BaseXZ*ABcos end --機体カラー--------------------------------------------------- COLOR_NAME="" CHANGE_STOP=0 function CHANGE_COLOR() --カラー変更 if _KEYDOWN(4)==1 then BODY_COLOR=_LOOP(BODY_COLOR+1,1,8) CHANGE_STOP=0 elseif _KEYDOWN(5)==1 then BODY_COLOR=_LOOP(BODY_COLOR-1,1,8) CHANGE_STOP=0 end if CHANGE_STOP==0 then CHANGE_STOP=1 --初期カラー if BODY_COLOR==1 then COLOR_NAME="Default" --カウル以外 COLOR_01 =tonumber("AAAAAA",16) --メイン COLOR_02 =tonumber("77aa88",16) --サブ COLOR_03 =tonumber("444444",16) --ダーク --カウル COLOR_01C=tonumber("777777",16) --メイン COLOR_02C=tonumber("586877",16) --サブ COLOR_03C=tonumber("333333",16) --ダーク COLOR_04C=tonumber("3A3A3A",16) --ダーク2 COLOR_05C=tonumber("af9066",16) --サブ2 end --アスファルト if BODY_COLOR==2 then COLOR_NAME="Asphalt" --カウル以外 COLOR_01 =tonumber("555555",16) --メイン COLOR_02 =tonumber("555555",16) --サブ COLOR_03 =tonumber("444444",16) --ダーク --カウル COLOR_01C=tonumber("444444",16) --メイン COLOR_02C=tonumber("444444",16) --サブ COLOR_03C=tonumber("333333",16) --ダーク COLOR_04C=tonumber("444444",16) --ダーク2 COLOR_05C=tonumber("000000",16) --サブ2 end --泥 if BODY_COLOR==3 then COLOR_NAME="Mud" --カウル以外 COLOR_01 =tonumber("645847",16) --メイン COLOR_02 =tonumber("645847",16) --サブ COLOR_03 =tonumber("4f4c44",16) --ダーク --カウル COLOR_01C=tonumber("534736",16) --メイン COLOR_02C=tonumber("534736",16) --サブ COLOR_03C=tonumber("3f3c33",16) --ダーク COLOR_04C=tonumber("534736",16) --ダーク2 COLOR_05C=tonumber("000000",16) --サブ2 end --緑 if BODY_COLOR==4 then COLOR_NAME="Green" --カウル以外 COLOR_01 =tonumber("447733",16) --メイン COLOR_02 =tonumber("447733",16) --サブ COLOR_03 =tonumber("444f4c",16) --ダーク --カウル COLOR_01C=tonumber("336622",16) --メイン COLOR_02C=tonumber("336622",16) --サブ COLOR_03C=tonumber("333f3c",16) --ダーク COLOR_04C=tonumber("336622",16) --ダーク2 COLOR_05C=tonumber("000000",16) --サブ2 end --砂漠 if BODY_COLOR==5 then COLOR_NAME="Desert" --カウル以外 COLOR_01 =tonumber("BBAA88",16) --メイン COLOR_02 =tonumber("BBAA88",16) --サブ COLOR_03 =tonumber("4f4c44",16) --ダーク --カウル COLOR_01C=tonumber("aa9977",16) --メイン COLOR_02C=tonumber("aa9977",16) --サブ COLOR_03C=tonumber("3f3c33",16) --ダーク COLOR_04C=tonumber("aa9977",16) --ダーク2 COLOR_05C=tonumber("FFCC88",16) --サブ2 end --コンクリート if BODY_COLOR==6 then COLOR_NAME="Concrete" --カウル以外 COLOR_01 =tonumber("bbbbbb",16) --メイン COLOR_02 =tonumber("bbbbbb",16) --サブ COLOR_03 =tonumber("777777",16) --ダーク --カウル COLOR_01C=tonumber("999999",16) --メイン COLOR_02C=tonumber("999999",16) --サブ COLOR_03C=tonumber("666666",16) --ダーク COLOR_04C=tonumber("999999",16) --ダーク2 COLOR_05C=tonumber("BBBBBB",16) --サブ2 end --雪 if BODY_COLOR==7 then COLOR_NAME="Snow" --カウル以外 COLOR_01 =tonumber("FFFFFF",16) --メイン COLOR_02 =tonumber("FFFFFF",16) --サブ COLOR_03 =tonumber("999999",16) --ダーク --カウル COLOR_01C=tonumber("FFFFFF",16) --メイン COLOR_02C=tonumber("FFFFFF",16) --サブ COLOR_03C=tonumber("777777",16) --ダーク COLOR_04C=tonumber("FFFFFF",16) --ダーク2 COLOR_05C=tonumber("BBBBBB",16) --サブ2 end --アナザー if BODY_COLOR==8 then COLOR_NAME="Midnight Forest" --カウル以外 COLOR_01 =tonumber("3c4c3f",16) --メイン COLOR_02 =tonumber("334448",16) --サブ COLOR_03 =tonumber("333333",16) --ダーク --カウル COLOR_01C=tonumber("2c3c2f",16) --メイン COLOR_02C=tonumber("223338",16) --サブ COLOR_03C=tonumber("222222",16) --ダーク COLOR_04C=tonumber("2c3c2f",16) --ダーク2 COLOR_05C=tonumber("2233ff",16) --サブ2 end end end --自作関数--------------------------------------------- --ステップ("対象変数(文字列)",指定値,1フレームの移動量) function _STEP(STeP1,STeP2,STeP3) _G[STeP1]=_G[STeP1]+_LIMIT(STeP2-_G[STeP1],-STeP3,STeP3) return _G[STeP1] end --フォントゲージ(現在値,最大値,ゲージの長さ) function _FONTG(FoG1,FoG2,FoG3) if FoG1>FoG2 then FoG1=FoG2 end FoG4,FoG5=math.floor((FoG1/FoG2)*FoG3),"" for loop=1,FoG4,1 do FoG5=FoG5.."!" end for loop=FoG4+1,FoG3,1 do FoG5=FoG5.."." end return FoG5 end --リミッター(対象変数,下限,上限) function _LIMIT(liM,liM_min,liM_max) if liM>liM_max then liM=liM_max end if liMlP_max then lP=lP_min end if lPlP_max then surplus=lP-lP_max lP=lP_min+surplus end if lP0 then SgN=1 elseif SgN<0 then SgN=-1 end return SgN end --color用数値変換 (R,G,B [0-255]) function _CONCOL(COnVR,COnVG,COnVB) return math.floor(COnVR)*65536+math.floor(COnVG)*256+math.floor(COnVB) end --effect用数値変換(透明度,発光度,スペキュラの強さ,スペキュラ [0-15]) function _CONEFF(COnV1,COnV2,COnV3,COnV4) return math.floor(COnV1*16+COnV2)*256+math.floor(COnV3*16+COnV4) end --角度差(AgAp1xyz=ベクトル1 AgAp2xyz=ベクトル2) function _GAP(AgAp1x,AgAp1y,AgAp1z, AgAp2x,AgAp2y,AgAp2z) nAi = _NAI(AgAp1x,AgAp1y,AgAp1z,AgAp2x,AgAp2y,AgAp2z) xxx,gaI,xxx = _GAI(AgAp1x,AgAp1y,AgAp1z,AgAp2x,AgAp2y,AgAp2z) AgAp=math.deg(math.acos(nAi))*_SGN(gaI) if AgAp>=0 or AgAp<0 then return AgAp else return 0 end end --計算エラー対策 --角度差2(AgAp1xyz=ベクトル1 AgAp2xyz=ベクトル2) ※正規化しない function _GAP2(AgAp1x,AgAp1y,AgAp1z, AgAp2x,AgAp2y,AgAp2z) nAi = _NAI2(AgAp1x,AgAp1y,AgAp1z,AgAp2x,AgAp2y,AgAp2z) xxx,gaI,xxx = _GAI2(AgAp1x,AgAp1y,AgAp1z,AgAp2x,AgAp2y,AgAp2z) AgAp=math.deg(math.acos(nAi))*_SGN(gaI) if AgAp>=0 or AgAp<0 then return AgAp else return 0 end end --計算エラー対策 --内積(NAi123=ベクトル1 NAi456=ベクトル2) function _NAI(NAi1,NAi2,NAi3, NAi4,NAi5,NAi6) NAi1,NAi2,NAi3=_SEI(NAi1,NAi2,NAi3) NAi4,NAi5,NAi6=_SEI(NAi4,NAi5,NAi6) NAi1=NAi1*NAi4+NAi2*NAi5+NAi3*NAi6 return NAi1 end --外積(GAi_a123=ベクトル1 GAi_b123=ベクトル2) function _GAI(GAi_a1,GAi_a2,GAi_a3, GAi_b1,GAi_b2,GAi_b3) GAi_c1,GAi_c2,GAi_c3=(GAi_a2*GAi_b3-GAi_a3*GAi_b2),(GAi_a3*GAi_b1-GAi_a1*GAi_b3),(GAi_a1*GAi_b2-GAi_a2*GAi_b1) GAi_c1,GAi_c2,GAi_c3=_SEI(GAi_c1,GAi_c2,GAi_c3) return GAi_c1,GAi_c2,GAi_c3 end --二重外積(WGAi_a123=ベクトル1 WGAi_b123=ベクトル2) function _WGAI(WGAi_a1,WGAi_a2,WGAi_a3, WGAi_b1,WGAi_b2,WGAi_b3) WGAi_c1,WGAi_c2,WGAi_c3=_GAI(WGAi_a1,WGAi_a2,WGAi_a3,WGAi_b1,WGAi_b2,WGAi_b3) WGAi_c1,WGAi_c2,WGAi_c3=_GAI(WGAi_a1,WGAi_a2,WGAi_a3,WGAi_c1,WGAi_c2,WGAi_c3) return WGAi_c1,WGAi_c2,WGAi_c3 end --正規化(ベクトル) function _SEI(SEi1,SEi2,SEi3) do local length=math.sqrt(SEi1^2+SEi2^2+SEi3^2) if length>0 then length=1/length else length=0 end SEi1,SEi2,SEi3=SEi1*length,SEi2*length,SEi3*length return SEi1,SEi2,SEi3 end end --内積2(NAi123=ベクトル1 NAi456=ベクトル2) ※正規化しない function _NAI2(NAi1,NAi2,NAi3, NAi4,NAi5,NAi6) NAi1=NAi1*NAi4+NAi2*NAi5+NAi3*NAi6 return NAi1 end --外積2(GAi_a123=ベクトル1 GAi_b123=ベクトル2) ※正規化しない function _GAI2(GAi_a1,GAi_a2,GAi_a3, GAi_b1,GAi_b2,GAi_b3) GAi_c1,GAi_c2,GAi_c3=(GAi_a2*GAi_b3-GAi_a3*GAi_b2),(GAi_a3*GAi_b1-GAi_a1*GAi_b3),(GAi_a1*GAi_b2-GAi_a2*GAi_b1) return GAi_c1,GAi_c2,GAi_c3 end --二重外積2(WGAi_a123=ベクトル1 WGAi_b123=ベクトル2) ※正規化しない function _WGAI2(WGAi_a1,WGAi_a2,WGAi_a3, WGAi_b1,WGAi_b2,WGAi_b3) WGAi_c1,WGAi_c2,WGAi_c3=_GAI2(WGAi_a1,WGAi_a2,WGAi_a3,WGAi_b1,WGAi_b2,WGAi_b3) WGAi_c1,WGAi_c2,WGAi_c3=_GAI2(WGAi_a1,WGAi_a2,WGAi_a3,WGAi_c1,WGAi_c2,WGAi_c3) return WGAi_c1,WGAi_c2,WGAi_c3 end --未来予測(FCAsaxyz=現在のベクトル FCAsbxyz=過去のベクトル) function _FORECAST(FCAsax,FCAsay,FCAsaz, FCAsbx,FCAsby,FCAsbz) rot=_NAI(FCAsax,FCAsay,FCAsaz,FCAsbx,FCAsby,FCAsbz) if rot>=1 then FCAscx,FCAscy,FCAscz=FCAsax,FCAsay,FCAsaz else rot=-math.rad(-math.acos(rot)*_180pi) WGAIx,WGAIy,WGAIz=_WGAI(-FCAsax,-FCAsay,-FCAsaz,FCAsbx,FCAsby,FCAsbz) loop_cos,loop_sin=math.cos(rot),math.sin(rot) FCAscx,FCAscy,FCAscz=_SEI(FCAsbx*loop_cos+WGAIx*loop_sin, FCAsby*loop_cos+WGAIy*loop_sin, FCAsbz*loop_cos+WGAIz*loop_sin) end return FCAscx,FCAscy,FCAscz end }