まからのブロマガ

上級者向けR.I.N.G.取説 #Mincraft #JointBlock

2020/04/23 17:14 投稿

  • タグ:
  • Minecraft
  • JointBlock
  • JointBlockの使い方
  • JB解説まとめ
  • R.I.N.G.

ノード解説上級者向け
大体わかってる人の普段使い用

●構文系ノード(ST:SyntaxNode)


空ノード  「ジャンプ先とか見やすくする為とか」

IFジャンプノード  「条件で別ノードに移動」
 -入力ノード
  0>~23
 -ジャンプ先ノード
  0>~23
 -ジャンプ条件
  入力が真(TRUE=0以外の数 多くは1)
 >入力が偽(FALSE=0)
 >入力がエラー
 >入力がエラーでない

ウェイトノード  「まつ。1Tickは1/10秒」

 -時間(Tick)
  1~?

他リング呼出ノード  「べつのページに移動する。」

 -ページ番号
 -ノード番号

リターンノード  「元のページにもどる」
 -固定値

変数ノード  「数値を覚えとく」
 -初期値

2値オペノード   「2つの値を見比べる」
 -オペエタイプ

  加算(+) 二つの値を足す(マイナス加算すれば減算にもなる)
 >減算(-) 二つの値を引く
 >乗算(X)  二つの値を掛ける
 >除算(÷)剰余(Mod) 二つの値を割る
 >等しい(A=B) AがBと同じならTrueを返す
 >等しい(整数)(A=B)  未調査
 >小なり(A<B) AがBとより小さいとTrueを返す
 >大なり(A>B) AがBとより大きいとTrueを返す
 >以下(A≦B)  AがBと以下ならTrueを返す
 >以上(A≧B)  AがBと以上ならTrueを返す
 >論理積(AND) 未調査 2値がともにTrue
 >論理和(OR) 未調査 2値のどちらかがTrue 
 >排他的論理和(XOR) 未調査 2値がどちらもFales
 >Pow(A,B)   累乗。AのB乗
 >Min(A,B)   未調査 2値の小さい方?
 >Max(A,B) 未調査 2値の大きい方?
 >Atan2(A,B) 三角関数、タンジェントAB。
        3~-3ラジアンの角度が出てくる。
        出た角度を57.2958倍すると角度値になる。
        ※1値オペのToDag()を使えばおk
 >Vec3 Dot(V1,V2) 未調査
 >Vec3 Dist(V1,V2) 未調査
 >Vec3 Add(V1,V2) 未調査 おそらくベクタ値同士を足す
 >Vec3 Sub(V1,V2) 未調査 おそらくベクタ値同士を引く
 >Vec3 Cross(V1,V2)未調査
 -入力ノードA>固定値A
 -入力ノードB>固定値B
 -代入先ノード ←代入先ノードの内部値をこれの内部値で上書きする

1値オペノード   「色々計算して値を変える」
 -オペタイプ
  代入(無操作)
 >切捨て   端数を切り捨て整数を返す
 >四捨五入  端数を四捨五入し整数を返す
 >切下げ   端数を切り下げ整数を返す
 >切上げ   端数を切り上げ整数を返す
 >否定(NOT) 未調査
 >Abs(x)   数値の絶対値
 >Sqrt(x)  √(ルート)計算 ※ピタゴラスの定義
       対象とのxyz軸座標差を二値オペノード、Pow(a,2)で累乗して
       3つを加算。その値を一値オペノード、Sqrt()に入れると
       2座標間の距離が出ます。

       ターゲット状態検知で距離は出せますが、ターゲットせず座標だけで
       距離を出したい場合はこんな感じ(出る距離が1ブロック単にだしね)
       
 >Sin(x)   三角関数サイン ※三角関数を復習(´・ω・`)
 >Cos(x)  三角関数コサイン
 >Tan(x)  三角関数タンジェント 
 >ASin(x)  sinの逆関数(アークサイン、逆正弦)※アークって?
 >ACos(x) Cosの逆関数(アークコサイン、逆コサイン)
 >ATan(x)  Tanの逆関数(アークタンジェント、逆タンジェント)
       出た値を57.2958倍すると角度になる。(ラジアン変換)
       ※2値オペのATan2(x)と違って絶対値みたい。
 >toRad(x) 未調査 角度をラジアンに変換? 約57.2958で÷
 >toDeg(x) 未調査 ラジアンを角度に変換? 約57.2958倍
       対象との距離差を「x÷z」してAtan(x)に入れるとラジアン角がでます
       それをtoDeg(x)に入れてやると角度が出ます。
       この分ローテータを回せば、ローテータが対象に向きます。
       編隊を組むR.I.N.G.
      
 >Exp(x)  未調査 指数関数らしい。よくわからん(´・ω・`)
 >ベクタX(:0) ベクタ値の内ベクタx(0)番を取得する
 >ベクタY(:1) ベクタ値の内ベクタy(1)番を取得する
 >ベクタZ(:2) ベクタ値の内ベクタz(2)番を取得する
 >ベクタW(:3) ベクタ値の内ベクタw(3)番を取得する
 >Vec3 Length(x)   未調査
 >Vec3 Normalize(x) 未調査
 >E(定数)  未調査
 >π(定数)  未調査
 >Err(定数) エラーを出力
 >乱数   乱数を発生させる。0.00~1.00まで
  ※いっぱいあるね! 三角関数とか乱数とか面白そう。
  2018.10/3加筆

 -入力ノード>固定値 ←この値を上の式で計算して、内部値を上書きする
 -代入先ノード ←代入先ノードの内部値をこれの内部値で上書きする

ミラーリンクノード  「別ページのノードの値を参照する」
 -ページ番号
 -ノード番号
 -外部リンク
  しない>自分>マスター
  -R.I.N.G.スロット番号
   0>1>2>3


ベクタノード  「4つの数値を同時に扱うノード」

 -値0
 -値1
 -値2
 -値3


─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
●検知系ノード(TG:TriggerNode)

キー状態検知ノード  「汎用キーが押されてるか見る」

 -座席番号
  1番>~4番
 -キー番号
  汎用キー1~8>前後左右上下>マウスホイル上下
 -シングル/ダブル
  通常>ダブル ←ダブルでキーを叩いても、シングルはシングルで反応する。

アイテム状態検知ノード 「アイテムMCTRLを使ってか見る。」
 -座席番号

  1番>~4番
 -アイテムACT
  青 左右>赤>緑 >黄


座席状態検知ノード  「座ってるかとか座席の状態をみる。」

 -座席番号
  1番>~4番
 -検出タイプ
  座席タイプ     
  >プレイヤー騎乗  
  >Entity騎乗    
  >Entity大別    
  >Entity名ハッシュ 
  >EntityID     
   ・ハッシュ調査 https://ch.nicovideo.jp/makara/blomaga/ar1885174#-

プレイヤー状態検知ノード  「HPとかENとかプレイヤーの状態を見る。」
 -座席番号
  1番>~4番
 -検出タイプ
  ピッチ
  >Yaw(ユニット相対)そのユニットとの差 シート1だと強制的に同じになる。
  >Yaw(ワールド絶対)向いてる向き。180~-180
             南が0で時計回りが+、反時計回りが-
            北が180、西が+90東が-90

  >腕スウィング   シート1の場合プレイヤーにスレーブでくっ付いてる時でも
            数値が取れる

ユニット移動検知ノード  「向きとか移動状態を見る。」
 -検出タイプ
  Yaw(ワールド絶対値)
  >移動中
  >移動中(回転含)
  >上昇中
  >下降中
  >空中     
  >ジャンプ中  
  >飛行中    
  >滞空/潜行 Ver0.8より2タイプ兼用に  
  >ダッシュ中  
  >スピンレート ローターや助走の状態
  >腕ふり率   振りはじめかの状態(0~1)角度ではない。
  >地表距離(10迄)
  >ゼロ重力

 ワールド絶対値はこんな感じ。
 南を0として時計回りが+方向で西は90。 反時計回りが-方向で東は-90。
 北は179を境に-180に変わる。
 ※そのためyaw179と-180は359度離れてることになり、
  yaw差分回転指示すると時計回りに1回転する。
 


ユニット状態検知ノード  「HPやスレーブ、HPなどの状態を見る。」

 -検出タイプ
  初期値モード 現在の初期値レイヤー番号
  >スレーブ状態 マスター=0 スレーブ=1
  >スレーブスロット スレーブ時の番号
  >マスターE接続 マスターに接続している場合1
  >マスターT接続 アセンブルしたマスターが存在しない場合1
  >体力 体力残量
  >EN EN残量
  >ENプール 燃料残量
  >体力レート ユニットの体力残量率(100%=1)
  >ENレート ユニットのEN残量率(100%=1)
  >EntityID ユニット自身のEID

ch状態検知ノード  「各チャネルの動いてる状態を見る。」
※Ver0.8より機能

 -chタイプ
  モーションch
 >アクションch
 >移動軸ch
 >入力ch
 -チャネル
  各対応チャネルを選択

センサー状態検知ノード  「各センサーの座標や状態を見る。」
 -センサー番号
  1~10番
 -検出タイプ
  センサー座標x 
 >センサー座標Y 
 >センサー座標Z 
 >センサー座標ベクタ
 >前方方向ベクタ ? 絶対方向っぽい。北が1で南が-1みたいな
 >検索結果0~3 Enthityを入れる場所 4つタゲを保管できる
 >検索結果ベクタ 
 >パーツID Ver0.8で追加 センサーを入れたブロックのIDが解る。
       IDは固定ではなくコアから遠いブロックほど大きいIDが割り振られる
 >センサーが有効か

ターゲット状態検知ノード  「各ターゲットの向きや状態を見る。」

 -センサー番号
  1~10番
 -ターゲット番号
  1~5番
 -検出タイプ
  距離> 相手との距離(ブロック)少数点まで出てる。
  Yaw差>正面を0度とした、相手のいる角度。左がマイナス右がプラス
      これを使えば偏差撃ちなんかも出来るし、正面に居ない時は追いかけない
      などのコントロールが出来る。
  Pitch差>正面を0度とした、相手のいる角度。上がプラス、下がマイナス
  有効か>
  Tg-S差x>ターゲットとのx軸のみの距離差?
  Tg-S差y>ターゲットとのy軸のみの距離差?
  Tg-S差z>ターゲットとのz軸のみの距離差?
  Tg-S差ベクタ>ベクタ値距離差?
  ターゲット座標x>ターゲットのx座標
  ターゲット座標y>ターゲットのy座標
  ターゲット座標z>ターゲットのz座標
  Tg座標ベクタ>ターゲット座標のベクタ値(XYZ)
  対象がEntityか>
  ターゲットEID ターゲットのEntityID

ジョイントパーツ状態検知ノード  「ブロックの初期値やモーション状態を見る。」
※Ver0.8より追加
 -パーツID 0~? IDは固定ではなくコアから遠いブロックほど大きいIDが割り振られる
           固定番号で指定する事も出来るが不安定なので、
           前後のブロックにセンサーを入れてセンサーTGで拾う方がヨイ
 -検出タイプ
 >ジョイント種別 0コア 2シート 4ノーマル 8ローテータ
          10エクステンダー 12スケーラー 14スライダー 15アトラクター
 >パーツ深度 コアからのブロック数
 >現在回転x>現在回転y>現在回転z>現在伸縮>現在値ベクタ
  ブロックの現在値 ベクタの値はxyz伸縮%
 >初期値A>初期値B>初期値C>初期値D>初期値ベクタ
  ブロックの初期値 ブロックによってABCDの内容は変わる
  アトラクターやシートなども数値が取れる(スロット番号とかインターフェースとか)

 >親パーツID そのまま。大抵はそのパーツ-1番
 >子パーツID(下方) y座標が下のパーツのID
 >子パーツID(上方) y座標が上のパーツのID
 >子パーツID(後方) x座標が後のパーツのID
 >子パーツID(前方) x座標が前のパーツのID
 >子パーツID(右方) z座標が右のパーツのID
 >子パーツID(左方) z座標が左のパーツのID
 >子パーツID(自動) 自動で子パーツを探します。複数ある場合はIDの若い方?
  大抵は自動でいいと思う。

 パーツIDはブロックを組む際、下記の様に「下上後前右左」の順に割り振られる。
 優先先にブロックが追加された場合、以降のIDはトコロテン式にズレていく。
 

Entity状態検知ノード  「対象の向きや座標、状態を見る。」

 -EntityID
 -検出タイプ
  生存しているか>死んでたらFales(0)
  座標x >座標
  y   >座標
  z   >座標
  座標ベクタ>ベクタ座標
  Pitch   >向いてるピッチ角(上下方向の角度)
  Yaw   >向いてるヨー角(左右の角度)
  目座標ベクタ >?
  視線ベクタ  >視点の向いているベクタ値 ワールド絶対方向っぽい?
  騎乗している >乗ってたらTure
  騎乗されている>乗られてたらTure
  移動中  >移動してたらTure
  上昇中  >上降中はTureらしい?
  下降中  >下降中はTureらしい?
  騎乗EID >対象に乗ってるEntityのID(馬をタゲった時その騎手のIDとか
  非騎乗EID>対象が乗ってるEntityのID(馬とか豚とかユニットとか)
  攻撃EID >攻撃対象のEntityのID
  復讐EID >ヘイトがこちらに向いているEntityのID?
  Entity大別> Enthity区分 2が動物 6がイカ 99がその他とかそんなん
  Entity名ハッシュ 個別に設定されてる番号
           Enthity検索指示ノードなどでハッシュ指定できる。
           弾「17463」
           >色々調べてみた
           https://ch.nicovideo.jp/makara/blomaga/ar1885174#-

Block状態検知ノード  「指定座標ブロックの状態を見る。」
 -座標x 座標 ターゲットやEnthityなど他の検知系から取得する。
 -座標y 座標 ターゲットやEnthityなど他の検知系から取得する。
 -座標z 座標 ターゲットやEnthityなど他の検知系から取得する。
 -検出タイプ
  空ブロックか 
 >ブロックID  
 >メタ値    
 >ノーマルか  
 >不透明か   
 >移動を阻害するか
 >固体か   
 >液体か   
 >硬さ    
 >不透明度   
 >光出力    
 >LS供給可能 
 >LS入力値   
 >LS関節入力値 

※Configの「enableOverpowerNode」をTRUEにしないと使えない。

─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─
●指示系ノード(DR:DirectionNode)

─────────────────────────
モーション変更指示ノード

・ローテータ  「ロテタを回す。」
 -チャネル
   ※チャネルMCTRLのモーションチャネル番号に対応。
          0にすると全部が回ってしまうので1以降で。 
 -実行タイプ
  セット>加算 ※セットが初期値変更、加算がモーションって所。
 -時間(Tick) ※設定Tickかけて下に設定した角度曲がる。←これ重要
          10度に設定してもTickを長くとるとユックリ曲がる。
          最大値最小値の概念はない。バネとか振り子とかもない。
          なので、回したら別ノードで戻す必要がある。
          面倒な場合はチップ入れて汎用キーを実行させるといい。
         ※命令を与えたらこのTick時間を過ぎてなくても、次のノードに
          に移動してしまうので注意。
 -後ろに持ち上げる※x軸への回転スピード
 -時計回りに廻す ※y軸への回転スピード
 -右へ開く    ※z軸への回転スピード

─────────────────────────
・エクステンダー  「エクスを伸ばす。」
 -チャネル   ↑うえさんしょう

 -実行タイプ
  セット>加算
 -時間(Tick)
 -伸縮度

─────────────────────────
・スライダー  「スライダーを動かす。」
 -チャネル   ↑うえさんしょう

 -実行タイプ
  セット>加算
 -時間(Tick)
 -左へスライド※x軸への移動スピード。1ブロック64で、128まで行くと折り返す。
 -上へスライド※y軸への移動スピード。1ブロック64で、128まで行くと折り返す。
 -前へスライド※z軸への移動スピード。1ブロック64で、128まで行くと折り返す。

─────────────────────────
・スケーラー  「スケーラーを動かす。」
 -チャネル   ↑うえさんしょう

 -実行タイプ
  セット>加算
 -時間(Tick)
 -縮尺



─────────────────────────
アトラクター指示ノード  「アトラクターを動かす。」
 -チャネル
 ※動かしたいR.I.N.G.チャネルMCTRLの番号を入れる。
 -機能
  有/無効切替 
  >有効化
  >無効化
  >パージ パージ期間(Tick)0~200
  >TE遮断信号 TE遮断範囲0~16 TE遮断機関(Tick)0~200
 ※Ver0.8で追加 基本的に汎用キーで操作するのと同じ。

─────────────────────────
アクション指示ノード  「チャネルへアクションを指示」

 -チャネル
 -時間(Tick)

─────────────────────────

エフェクト指示ノード  「音やパーティクルを指示する。」
 -チャネル
 ※動かしたいR.I.N.G.チャネルMCTRLの番号を入れる。
 -時間(Tick)
※再生時間?
 -エフェクトスロット 
※コアGUIのエフェクトタブで設定したスロット番号を入れる。
─────────────────────────
ターゲット回転ノード  「ロテタの向きをターゲットに向ける」

 -チャネル ※動かしたいチャネル番号を入れる。
 -ターゲット番号
  (オーナー)0番< 1番>2番>3番>4番
  ※事前に「ターゲット設定指示ノード」で
   Entity情報を指定ターゲット番号に入れとく事。
 -実行タイプ
 -タイプ
  xy両方>yのみ>xのみ
 -回転制限
  ※コアからの向きになるので調整がいる。
─────────────────────────

移動指示ノード  「指示した方向に移動する。」
 -移動ch 
  前後>左右>上下
 -方向
  前>後>後ろ(ダブル)・・・・・左右上下とかもえらべる。ダブルはステップとか。
 -時間(Tick) ※回転と違い、指定Tick時間のあいだ移動する。
 ※各ユニットタイプに合わせて移動する。
  ヘリやエアクラなら上にも移動する(際限なくどこまでも)
  飛べないユニットタイプの場合はジャンプする。
─────────────────────────

移動タスク指示ノード  「追いかけたり逃げたりさせる。」
 -タイプ
  追従する>遠ざかる>周囲を徘徊する>自由に徘徊する
  ※周囲の場合、ある程度離れると追従してくる
   自由の場合はランダム。
   (アルゴリズムが同じなのか、ユニットを並べると同じ動きをする)
  !歩行系とホバー・ヘリだけの対応です。
   エアクラフト・フロート・宇宙などは未実装
 -ターゲット番号
  0番(オーナー)< 1番>2番>3番>4番>5番
 -時間(Tick)※指定時間、命令を出してるので、その間出力が1
         これ変更しても10歩以上歩く。。。
─────────────────────────
Yaw更新指示ノード  「ユニットの向きを変える」

 -実行タイプ
  セット>加算※セットは絶対値方向に向く。0で北向くわけ。
 -時間(Tick)
 -セット時:Yaw(ワールド絶対値)/加算時:右(左)へYaw回転
  ※小数点以下の数値も設定できる
   ターゲット状態検知ノードでYaw差を取ってこれば、相手に向ける事が出来る。
─────────────────────────
Yaw追従指示ノード  「シートの向きにユニットの向きを変える」

 -座席番号
 -時間(Tick)
 -タイプ
  等速>加速>減速
 -Yaw速度
[出力]
 #DR系基本
[解説]
 #Yaw回転チャネルへ自身を登録
 次TICK以降に指定TICKの間ユニットのYaw値の追従処理
 #等速 追従方向へ常に一定のYaw値を加算
 #加速 追従差が小さいほど指定した加算値に近づく
 #減速 追従差が大きいほど指定した加算値に近づく
 ※シート1に乗ってる時は、権限movで移動制限しないと効果がない。
 シート2以降に乗ってる場合、そちらの向いてる方にユニットが向く
 前進してる時にシート2にYaw追従させると、トレーラーの様な動きになる。
─────────────────────────
キー使用指示ノード  「汎用キーを使用させる。」

 -座席番号
  1番>~4番
 -キー番号
  汎用キー1>~8
 -時間(Tick)
 -シングル/ダブル
  通常>
─────────────────────────

アイテム使用指示ノード  「アイテムMCTRLを使用させる。」

 -座席番号
  1番>~4番
 -アイテムACT
 青 左クリック>青右>赤左右>緑左右>黄左右
 -時間(Tick)
─────────────────────────

Entity検索指示ノード  「センサーに何を探すか指示する」
 -センサー番号
  0(機体センサー)<1番>~10番
  機体センサーの座標はコア底面になるらしい。
  1~10番はセンサーMCTRLの入ったブロックの中央
 -範囲
  0~64(ブロック数 Ver0.8以前は32)
 -ソート順
  距離が違い順に>射線に近い順に
 -IFFタグ
  全て>味方>敵
 -検出タイプ
  生物全般
  >プレイヤー
  >ユニット
  >アイテム
  >クリーチャー
  >動物
  >村人
  >ボス
  >全て
  >ハッシュ指定
   -ハッシュ(ハッシュ指定時のみ MOBやITEM、ブロックの固有番号 )
    0>~9(代入ノードを参照させた場合は何桁でもOK)
    JointBlock弾:17436(共通)
    地面に落ちたアイテム:-4335(共通)
    ・ハッシュ調査 https://ch.nicovideo.jp/makara/blomaga/ar1885174#-
  >クリア Ver0.8で追加 センサー状態検知ノードに読ませると検索結果を消せる
─────────────────────────

ターゲット指示ノード  「距離とかターゲット情報を取り出す。」
 -ターゲット番号
  1>~5
 -タイプ
  Entity
  -EntityID(Entity時)
  >ブロック座標
  -座標x(ブロック座標時)
  -座標y(ブロック座標時)
  -座標z(ブロック座標時)
  >ターゲットクリア Ver0.8で追加。指定番号のターゲット情報を消す
─────────────────────────
chクリアノード  「いろんなチャネルをクリアさせる」

 -chタイプ
  モーションch>アクションch>移動軸ch>入力ch
 -チャネル(各chタイプに対応したチャネルを選択
 -座席番号(入力chの場合のみ)1番席>2>3>4番席

─────────────────────────
モード変更指示ノード  「モード変更させる。」

 -タイプ
  初期値モード>スレーブスロット
 -モード
  初期値モードの場合:0>~127
 -メイン/サブタイプ
  初期値モードの場合:変更しない>メインタイプ>サブタイプ
 ※アドオンのサブタイプを入れて置けば、初期値変更に合わせて、
  タイプも変更できるらしい。
 -スロット
  スレーブスロットの場合:オフ>~10
 ※R.I.N.G.なら、一定秒後に切り換えとか組めるので面白いかも?


コメント

コメントはまだありません
コメントを書き込むにはログインしてください。

いまブロマガで人気の記事