Bread Board

Last-modified: 2025-11-08 (土) 21:17:38

編集時Ver 3.9.0.0(一部alpha_test 4.3.0.11)

概要

本ページではブレッドボードの解説を行います。
ブレッドボードはACBでは入力/出力が1:1でしか行えない所を複数対複数で処理できるブロックです。
簡単に言うと内部にACB回路が組める集積回路ブロックです。
複雑な回路を1ブロックで賄えるため場所を取らないので内部構造に余裕が無い小型ビークル等に特に有用です。もちろん複雑すぎて普通にACBで制御したら混線する恐れがある物を一纏めにしてもいい。
ただし、たった一つのブロックで多くの機能を賄えるということは、それが何かしらの理由で機能停止に追い込まれた場合、賄っている全機能が一撃で全てダウンすることの裏返しでもあります。
考えなしに使うと急所を増やすことにも繋がるので、ご利用は計画的に。
ブレボ.jpg

使い方

まず基本操作としてデフォルトキー設定ならばShift+マウスホイールでそのカーソルがある部分を拡大移動します。
左クリックで選択した状態で任意のグリッドの十字位置に右クリックすることで一つ一つのノード(節)の移動が可能です。
接続端子部分は左クリックで選択して右クリックで出力のどの機能に対して接続するかを選択することで接続が可能になります。
消したい場合は接続端子を選択してリムーブリンクでそのリンクが外れます。

  • 出力としてDriveなら接続端子部分が3つ存在し、上からFirst,Second,Third Driveとなっています。
    また、Roll、Pitch、Yawの角度は以下の図通りです
    Roll.jpgPitch.jpgYaw.jpg

具体的な使用方法

BB1.jpg
まず大雑把な説明ですが右の欄には入力と出力(演算)が存在し、左の欄には実際にサーキットを組むためのサーキットボードが存在します。
BB2.jpg
ではためしにFirstDriveに出力を行ってみます。

  • 定常値はLUAをやっている方なら知っている方が多いと思いますがDriveFunctionの最大値が1なので1%として0.01とします。
  • ①Constantを配置し、0.01を入力、次にDriveを配置します。
  • ②今回はFirstDrive出力を行いたいのでConstantの接続端子からDriveの一番上の入力末端に接続します。※左クリックで選択で右クリック
  • ③こうすると接続が完了し、FirstDriveに対して出力が開始されます。
    さあこれでわかりましたね!!
    では味気ないので2秒に一回80%の出力を発生させて、50%の出力に下げてみましょう。

BB4.jpg

できましたでしょうか、分からなければもう一度上からお読みください

ノード説明

インプット

英名名称、説明
Constant名称定数
Number(floating point)説明-100000~100000の間で小数点第二位まで設定できます
Number(64 bit integer)説明v3.9.0.0で追加
0~922337236854775807(922京3372兆368億5477万5807)の間の整数を設定できます
Text説明文字列を設定できます
Vector説明v3.9.0.0で追加
3次元ベクトルのx, y, zの各値を-100000.00~100000.00の間で小数点第二位まで設定できます
Quaternion説明v3.9.0.0で追加
クォータニオンをオイラー角で設定できます
Random number名称乱数
説明約0.04秒で1つ乱数を生成します。範囲は-10000.0~10000.0までで、上下限それぞれを設定できます
Altitude名称自機高度
Altitude above average sea level説明平均海面高からの自機高度を出力
Altitude above wave level説明波の高さからの自機高度を出力
Altitude above terrain説明地面からの自機高度を出力
Altitude above terrain and average sea level説明地面からかつ平均海面高からの自機高度(標高)を出力
Altitude above terrain and wave level説明地面からかつ波の高さからの自機高度(標高)を出力
Position名称位置
Universal coords説明ワールド座標
Standard coords説明Unityゲームエンジン上の座標
Speed名称速度
Magnitude説明移動速度の大きさをm/sで出力します
World vector説明ワールド座標での移動速度をm/sで出力します
Local vector説明機体の移動速度をm/sで出力します
Forward value説明正面方向の移動速度をm/sで出力します
Stability名称安定度
説明v3.5.5.0で追加
機体の安定度を0~100で出力します
Orientation input名称時機方位
Roll説明重心点のロール角度(左右の傾き)を出力
Pitch説明重心点のピッチ角度(前後の傾き)を出力
Yaw説明重心点のヨー角度(方位)を出力
Rotation名称回転
Euler angle as vector説明機体の回転角(pitch, ywa, roll)を3次元ベクトルとして出力します
Quaternion説明機体の回転をクォータニオンとして出力します
Forward vector説明正面方向の単位ベクトル(1, 0, 0)を出力します
Up vector説明上方向の単位ベクトル(0, 1, 0)を出力します
Right vector説明右方向の単位ベクトル(0, 0, -1)を出力します
Time名称時間
Total説明自ビークルが出現してからの総時間を出力します
Delta説明FtDの1フレーム(0.025秒)を出力します
Timer説明設定したTimer reset time周期ごとにON出力します。Timer reset timeは0.1~3600の間で小数第一位まで設定できます
Frame Number説明物理演算のステップ数を出力します
Time of Day info名称1日の時間
説明何時かを出力します。%表記ですが単位は時間(h)です
Propulsion名称推進(現ドライブ値を取得)
Main説明現在のMainのドライブ値を出力
Secondary説明現在のSecondaryのドライブ値を出力
Tertiary説明現在のTertiaryのドライブ値を出力
Forwards\Back説明現在の前進/後退のドライブ値を出力
Strafe Righ/Left説明現在の左側面/右側面移動のドライブ値を出力
Hover Up/Down説明現在の上面/下面移動のドライブ値を出力
Roll Right/Left説明現在の右/左ロールのドライブ値を出力
Pitch Up\Down説明現在の上/下ピッチのドライブ値を出力
Yaw Right/Left説明現在の右/左ヨーのドライブ値を出力
A説明現在のAのドライブ値を出力
B説明現在のBのドライブ値を出力
C説明現在のCのドライブ値を出力
D説明現在のDのドライブ値を出力
E説明現在のEのドライブ値を出力(※A~Eドライブってなんやねん!て方はビークルコントローラーを見てね!)
Complex Control名称コンプレックスコントロール
none説明どんな操作を受けてもON出力を出さない
T説明コンプレックスコントローラT入力時ON出力
G説明コンプレックスコントローラG入力時ON出力
Y説明コンプレックスコントローラY入力時ON出力
H説明コンプレックスコントローラH入力時ON出力
U説明コンプレックスコントローラU入力時ON出力
J説明コンプレックスコントローラJ入力時ON出力
I説明コンプレックスコントローラI入力時ON出力
K説明コンプレックスコントローラK入力時ON出力
O説明コンプレックスコントローラO入力時ON出力
L説明コンプレックスコントローラL入力時ON出力
up説明コンプレックスコントローラ↑入力時ON出力
down説明コンプレックスコントローラ↓入力時ON出力
left説明コンプレックスコントローラ←入力時ON出力
right説明コンプレックスコントローラ→入力時ON出力
Flagship info名称旗艦ビークル情報
第一出力末端説明自ビークルではなく他ビークルが旗艦なのか(そうならば1を出力,なければ0を出力)
第二出力末端説明旗艦ビークルとの自ビークル距離値を出力
第三出力末端説明旗艦ビークルの高度(ワールドの高度)値を出力
第四出力末端説明旗艦ビークルとの自ビークル相対方位を出力
Custom propulsion input名称カスタム推進入力
説明**加筆求む!**

Event inputとGeneric block getterは長くなりそうなので折りたたんでおきます

Event input

Event input
英名名称、説明
Event input名称状態検知
No event説明未選択
CRAM fire説明発射されたCRAMの総口径を出力します
Missile fired説明発射されたミサイルの数を出力します
APS fired説明発射されたAPSの口径を出力します
Pulsed laser fired説明発射されたQ0以外のレーザーのエネルギー量を出力します
Continuous laser fired説明発射されたQ0レーザーのエネルギー量を出力します
Plasma cannon fired説明発射した弾体に使われたチャージの数を出力します
Flamer fired説明発射した火炎放射のパワーを出力します
Spawn説明vehicleが出現した際に0.1~1の間でランダムな数(以後トリガーと表記)を出力します
BlockLost説明vehicleが失ったブロックの数を出力します
Player patrol order received説明マニュアルパトロールモードに設定されたときにトリガーを出力します
A projectile has been noticed説明弾体などの飛翔体を検知すると1を出力し、その後は検知した個数分加算して出力します
Vehicle health fraction説明自機の体力を1~0で出力します
Enemy materials destroyed説明敵の破壊されたマテリアルの量を出力します
Material sent説明味方や子機に送ったマテリアルの総量を出力します
Material received説明味方や親機から送られたマテリアルの総量を出力します
Energy sent説明味方や子機に送ったエネルギーの総量を出力します
Energy received説明味方や親機から送られたエネルギーの総量を出力します
Material picked up説明拾ったマテリアルの総量を出力します
Target spotted説明初めて敵を発見したときにトリガーを出力します
Target dead説明発見済の敵が死んだときにトリガーを出力します
Primary target dead説明優先していた敵が死んだときにトリガーを出力します
Missile reloaded説明ミサイルの再装填が終わったときにトリガーを出力します
Collision with vehicle説明vehicleと衝突したときの速度を出力します

Generic block getter

Generic block getter
英名名称、説明
Generic block getter名称ブロック参照
説明自機に設置してあるあらゆるブロックの情報を得られます(ブロックに設定されている値や設置されている総個数など)
(項目が多すぎて書いていませんが、使えばわかります!)

alpha test 4.3.0.11で追加・変更されたインプット

alpha test 4.3.0.11で追加されたインプット
英名名称、説明
追加
Friendly Vehicle (Dist.)
名称友軍機情報
説明友軍機の情報を表示します。出力ノードは上から順に①友軍機の有無(0/1)、②距離(m)、③高度(m)、④速さ(m/s)、⑤位置(Vector3)、⑥速度(Vector3)、⑦方位角(度)、⑧ユニークID、⑨機体名(Text)を出力します。入力ノードに入力された数値でIndexの指定もできます。
Nearest説明自機から見て最も近い位置にいる味方の機体の情報を出力します。
Index説明自機から何番目に近いかを表す数値で表示する友軍機を決定します。複数友軍機がいる場合はプルダウンもしくは数値バーで選択が可能です。
追加
Friendly Vehicle (ID)
名称友軍機情報
説明友軍機の情報を表示します。入出力ノードともに(Dist.)と同じ仕様です。複数友軍機がいる場合はプルダウンもしくは数値バーで選択が可能です。
追加
Vehicle Origin Position
名称機体中心位置
説明自機の中心の座標を出力します。
Universal coords説明ワールド座標
Standard coords説明Unityゲームエンジン上の座標
追加
Self Vehicle Info
名称自機情報
説明自機の情報を表示します。出力ノードは上から順に①自機のユニークID、②位置(Vector3)、③高度(m)、④速さ(m/s)、⑤速度(Vector3)、⑥正面方向(Vector3)、⑦上方向(Vector3)、⑧右方向(Vector3)、⑨機体名(Text)を出力します。
Universal coords説明ワールド座標
Standard coords説明Unityゲームエンジン上の座標

コンポーネント

出力系

ノード名名称、説明
Printer名称プリンタ
説明第一入力末端の入力値を表示する。ノードの大きさはwidth*height、表示内容は入力値。出力末端は最大で5つですべて同じ値を出力する
width説明ノードの幅
height説明ノードの高さ
Display string説明"{0}"という記載をすると、入力値をテキストの間に挟むことができる。例:入力30の時、「現在"{0}"入力中」→現在30%入力中と表示される
Propulsion名称推進(ドライブ値を設定)
説明第一から第五入力末端の総和をドライブ値として設定する。Drive版と違うのは総和なのでノード、ボードを複数設けてもよい点(1つのボードにノードは140個までなのでボードを跨ぐこともあるv2.6.1で990個に増加)
Main説明Mainのドライブ値を設定
Secondary説明Secondaryのドライブ値を設定
Tertiary説明現在のTertiaryのドライブ値を設定
Forwards\Back説明現在の前進/後退のドライブ値を設定
Strafe Righ/Left説明現在の左側面/右側面移動のドライブ値を設定
Hover Up/Down説明現在の上面/下面移動のドライブ値を設定
Roll Right/Left説明現在の右/左ロールのドライブ値を設定
Pitch Up\Down説明現在の上/下ピッチのドライブ値を設定
Yaw Right/Left説明現在の右/左ヨーのドライブ値を設定
A説明現在のAのドライブ値を設定
B説明現在のBのドライブ値を設定
C説明現在のCのドライブ値を設定
D説明現在のDのドライブ値を設定
E説明現在のEのドライブ値を設定(※A~Eドライブってなんやねん!て方はビークルコントローラーを見てね!)
Drives名称ドライブ
説明第一入力末端の値をMain/Primaryのドライブ値、第二入力末端の値をSecondaryのドライブ値、第三入力末端の値をTertiaryのドライブ値を設定する。Propulsionと違うのは同時に3つ入力が一つのノードで出来るところ
第一入力末端説明入力値をMain/Primaryのドライブ値に設定
第二入力末端説明入力値をSecondaryのドライブ値に設定
第三入力末端説明入力値をTertiaryのドライブ値に設定
Custom propulsion名称カスタム推進
説明coming soon...
Variable Writer名称変数読み取り
説明第一入力末端の値を格納し、ほかのBBやvehicleでその値を使用することができる。Variable Readerとセットで使用し、Writerで格納した値をReaderで呼び出せる
Variable Name説明数値を格納するときの名前。下のEdit variable nameを押すことで名前を編集できる
[variable name].1 elements @0説明elementsの前の数字は、そのVariable Writerが選択している名前に要素がいくつあるか、@の後ろの数字はindexを表す。indexの初期値は0だが紫色の第二入力末端の値で変更できる
イメージとしては、Variable nameが数値を入れる箱の名前、indexがその中の仕切りのどこを指すか
Clear data from [variable name]説明elementsを初期状態に戻すボタン。indexが1以上のelementsを消去する
Vehicle説明このVariable Writerに格納した数値をReaderで取り出せる範囲を指定できる
第三出力末端説明トリガー入力。0が入力されているときは値を更新しない

中間演算系

ノード名名称、説明
Multiply名称乗算
説明入力値を±10.0の範囲で乗算を行う。出力末端は最大2つですべて同じ値を出力する
Switch名称スイッチ
説明第二入力末端にON入力を受けた時、Open valueの値をThreshold秒間出力する。出力を受けていない時は第一入力末端の値を出力する。出力末端は最大5つ ※入力間隔と出力間隔を同期したい場合は設定しているThreshold秒以上の越える必要がある。
Open value説明出力値
Threshold説明閾値(出力時間)
Sum名称総和
説明第一から第五入力末端からの入力値を総和し、出力する。出力末端は最大5つですべて同じ値を出力する
PID Controller名称比例、積分、微分制御
説明第一入力末端に入力された入力値を第二入力末端の数値になるようPID制御する(出力値は0.00~1.00)。出力末端は最大で5つですべて同じ値を出力する
Gain説明目標値へ向かう強度
Integral time説明目標値へ向かう際の持続的なズレ補正強度
Derivative time説明目標値へ向かう際の瞬間的なズレ補正強度
Clamp名称絞り
説明第一入力末端に入力された入力値をMinimum valueからMaximum valueの範囲を越えないよう出力する。出力末端は最大で5つですべて同じ値を出力する
Minimum value説明最低値、これ以下の場合は設定した最低値を出力する
Maximum value説明最大値、これ以上の場合は設定した最大値を出力する
Differencer名称差異
説明入力値の1フレームあたりの変化速度を出力する。入力・出力末端は1つのみ
Logic Gate名称論理ゲート
説明NOTやORなどの論理回路になるブロック。入力の解釈には3種類あり、上から
①0以外
②0より大きい
③1以上
NOT説明論理否定。出力を反転する
AND説明論理積。入力ノード両方に入力があった時に出力する
OR説明論理和。入力ノード1か所以上に入力があった時に出力する
XOR説明排他的論理和。入力ノードのどちらかに入力があった時のみ出力する
NAND説明否定論理積。入力ノード両方に入力がない時に出力する
NOR説明否定論理和。入力ノードに全く入力がない時に出力する
XNOR説明否定排他的論理和。入力ノード両方の状態が一致している時に出力する
Max/Min名称最大/最小
説明複数の入力に対してそのうち最大もしくは最小の値のみを出力する。第一出力末端がその値、第二出力末端が何番目の入力を出力しているかを出力する
Sorter名称並び替え
説明複数の入力に対して値の小さい順もしくは大きい順に出力の順番を調整する
Comment名称コメント
説明**加筆求む!**
Accumulator(with threshold)名称累算器(閾値付き)
説明**加筆求む!**
Threshold名称閾値
説明**加筆求む!**
One shot名称ワンショット
説明**加筆求む!**
Delay Pulse名称遅延パルス
説明coming soon...
Playback名称音声再生
説明音声ファイルを再生するコンポーネント。デフォルトで入っているMihoの音声のほか、C:\Users\[ユーザー名]\Documents\From The Depths\Sounds内に入れたファイルを認識する。0以上の数値が入力されたときに再生される
説明誰の音声を再生するかプルダウンから選択できる
説明音声ファイルがまとめられているときはここから選択可能
説明「#+ファイル名」で再生する音声ファイルを指定できる
Delay説明入力ノードに数値が来てからどの程度遅れて再生するか設定できる。上限と下限を0~10秒の間で設定可能
Audible distance説明どの範囲まで音が聞こえるか設定できる。上限と下限を1~5000mの間で設定可能
Pitch説明再生時の音声のピッチを設定できる。上限と下限を0.1~10の間で設定できる ※音程と一緒に再生速度も変わる
Doppler説明音声のドップラー効果の強さを設定できる。上限と下限を0~1の間で設定できる
Generic block setter名称汎用ブロック設定
説明数値を設定できるアイテムに対してBBから値を設定できる。ブロックのアイテム名の後ろにある(#○)はいくつのアイテムを設定しようとしているかの数
Block name filter説明そのブロックについている名前(shift+Nで付けられる奴)でフィルターを設定できる
※名前については"完全一致"ではなく"含む"なので命名時注意!
項目②説明設定したいアイテム
項目③説明そのアイテムのどの値を設定するか
Maths Evaluator名称演算評価
説明最強の演算装置。第一入力末端から第五入力末端までの入力をExpession内に記述された式で演算し、その値を出力する。出力末端は最大で5つで、式が1個ならすべて同じ値を出力する 
追記:ver3.9.0.0より入力末端と出力末端の個数はアルファベットと同じ26個に増加しました
Expression説明ここに記述された式の演算を行う 例:a=3 b=10 c=1の時、(a*b)/c → 出力値30  複数の式をまとめる時、(a*b)/c,a+b+c → 第一出力末端の出力値30、第二出力末端の出力値14
v3.9.1.0より改行ができるようになりました
Icon width説明ノードの幅を5~200ピクセルの間で設定する
Show documentation説明ここに各演算子や入力変数名、関数などの説明がある内容については以下の通りである
Constants/Inputs 以下定数と入力値(オペランド)
Pi説明円周率(3.14159265358979)
Right説明x方向のベクトル成分(1をセット)  例:Right*10→(10.0 0.0 0.0)
Up説明y方向のベクトル成分(1をセット)  例:Right*10→(0.0 10.0 0.0)
Forward説明z方向のベクトル成分(1をセット)  例:Right*10→(0.0 10.0 0.0)
a説明第1入力末端入力値
b説明第2入力末端入力値
c説明第3入力末端入力値
z説明第26入力末端入力値
Functions 関数(※一部順不同)
(戻り値の型)
(関数の形)
訳文※戻り値の型についてはnumber(数値)とvector(ベクトル)の要素はdouble型(v3.9.0.0~)、integer(整数)はlong型です
number
Sin(number x)
訳文xの正弦を数値で返します。xは度数で認識されます  例:Sin(30)→0.5, Sin(-30)→-0.5
number
Cos(number x)
訳文xの余弦を数値で返します。xは度数で認識されます  例:Cos(60)→0.5, Cos(240)→-0.5
number
Tan(number x)
訳文xの正接を数値で返します。xは度数で認識されます  例:Tan(45)→1
number
Sqrt(number x)
訳文xの平方根を数値で返します  例:Sqrt(625)→25
number
Asin(number x)
訳文xの逆正弦を度数で返します  例:Asin(1)→90
number
Acos(number x)
訳文xの逆余弦を度数で返します  例:Acos(-1)→180
number
Atan(number x)
訳文xの逆正接を度数で返します  例:Atan(1)→45
number
Atan2(number y, number x)
訳文点(x, y)に対応する角度を度数で返します  例:Atan2(√3/2, 1/2)→60
number
Exp(number x)
訳文ネイピア数eのx乗を数値で返します  例:Exp(1)→2.71828182845905, 1/1+Exp(1)^-x→シグモイド関数σ(x)
number
Log(number x)
訳文xの自然対数を数値で返します  例:Log(Exp(1))→1
number
Pow(number b, number p)
訳文bのp乗を数値で返します  例:Pow(5, 2)→25
number
Abs(number x)
訳文xの絶対値を数値で返します  例:Abs(-3.14)→3.14
vector
Abs(vector v)
訳文vの各要素の絶対値をベクトルで返します  例:Abs(-2, 0.5, -4.44)→(2, 0.5, 4.44)
number
Sign(number x)
訳文xの符号を数値(-1, 0, 1)で返します  例:Sign(123.123)→1, Sign(-456)→-1, Sign(0)→0
number
Round(number x)
訳文xに最も近い整数を数値で返します。小数第一位の四捨五入で最も近い整数が決定します  例:Round(1.499)→1, Round(100.5)→101
number
Floor(number x)
訳文xの小数点以下を切り捨てた値を数値で返します  例:Floor(1.499)→1, Floor(100.5)→100
number
Ceil(number x)
訳文xの小数点以下を切り上げた値を数値で返します  例:Ceil(1.499)→2, Ceil(100.5)→101
number
Max(number a, number b, [number c])
訳文aとbとcのうち最も大きい数値を返します。cは無くても機能します  例:Max(3.14, 3.1415, 3.141592)→3.141592, Max(3.14, 3.1415)→3.1415
number
Min(number a, number b, [number c])
訳文aとbとcのうち最も小さい数値を返します。cは無くても機能します  例:Max(3.14, 3.1415, 3.141592)→3.14, Min(3.14, 3.1415)→3.14
integer
Max(integer a, integer b, [integer c])
訳文aとbとcのうち最も大きい整数を返します。cは無くても機能します  例:Max(5, 10, 15)→15(int), Max(5, 10)→10(int)
integer
Min(integer a, integer b, [integer c])
訳文aとbとcのうち最も小さい整数を返します。cは無くても機能します  例:Min(5, 10, 15)→5(int), Min(5, 10)→5(int)
number
Max(vector v)
訳文vの成分のうち最大のものを返します  例:Max(a(4, 3, 4))→4
AnyType
If(number condition, AnyType if true, AnyType if false)
訳文If構文です。If(数値に関する判定式, 正のとき、偽のとき)のように使います。入れ子にすることで複数の条件分岐が可能です
例:If(a>10,10,a)→aが10を超えたら10のまま、10以下はそのままaを出力する
例:If(a>10,10,if(a<0,0,a))→aが10を超えたら10のまま、10以下のときに0未満であれば0のまま、それ以外はそのままaを出力する
AnyType
If(integer condition, Anytype if true, Anytype if false)
訳文上記の関数の整数バージョン
text
String(AnyType to be a string, [text format code])
訳文v3.9.0.0で追加
C#のToString()メソッド、簡単に言えばエクセルのデータ形式と同様の働きをします。text format codeは無くても機能します。詳しくはToStringメソッドでの書式指定(Qiita)を見てね(他力本願寺)
例:String(3.14, "c")→"$3.14", String(3.14, "e")→"3.140000e+000", String(3.14, "##.##")→"3.14", String(3.14)→"3.14"(文字列で出力されることに注意!)
vector
Vector(number x, number y, number z)
訳文x~zを用いて3次元行ベクトルを返します  例:Vector(1, 2, 3)→(1, 2, 3)
integer
Int(number x)
訳文xを四捨五入して整数xとして返します  例:Int(3.14)→3(int)
integer
Int(integer x)
訳文xを整数xとして返します。よくわかりませんが安全のため追加されているとのこと  例:Int(3)→3(int)
integer
Int(text s)
訳文sを整数xとして返します。整数として返せない場合は整数0を返します
例:Int("5")→5(int), Int("3.14")→0(int), Int("abcde")→0(int)
number
Num(integer x)
訳文xを数値xとして返します  例:Num(4)→4
number
Num(number x)
訳文xを数値xとして返します。よくわかりませんが安全のため追加されているとのこと  例:Num(4)→4
number
Num(text s)
訳文sを数値xとして返します。数値として返せない場合は数値0を返します  例:Num("3.14")→3.14
vector
ToUniversal(vector standard coord)
訳文v3.9.0.0で追加
Positionノードのスタンダード座標(Unityゲームエンジン上の座標)をユニバーサル座標で返します
例(第1入力末端aにPosition[Standard]をつないだ状態で):ToUniversal(a)→(対応した3次元行ベクトル)
vector
ToStandard(vector universal coord)
訳文v3.9.0.0で追加
Positionノードのユニバーサル座標をスタンダード座標(Unityゲームエンジン上の座標)で返します
例(第1入力末端aにPosition[Universal]をつないだ状態で):ToStandard(a)→(対応した3次元行ベクトル)
vector
LocalPosToGlobalPos(vector local position,
vector parent position, rotation parent rotation)
訳文自機のローカル座標系での位置をワールド座標系での位置に変換します(※1:編者未使用につき正しくない場合があります)
vector
GlobalPosToLocalPos(vector global position,
vector parent position, rotation parent rotation)
訳文自機のグローバル座標系での位置をローカル座標系での位置に変換します(※1)
rotation
LocalRotToGlobalRot(rotation local rotation,
rotation parent rotation)
訳文自機のローカル座標系での回転をグローバル座標系での回転に変換します(※1)
rotation
GlobalRotToLocalRot(rotation global rotation,
rotation parent rotation)
訳文自機のグローバル座標系での回転をローカル座標系での回転に変換します(※1)
vector
LocalDirToGlobalDir(vector local direction,
rotation parent rotation)
訳文自機のローカル座標系での方向をグローバル座標系での方向に変換します(※1)
vector
GlobalDirToLocalDir(vector global direction,
rotation parent rotation)
訳文自機のグローバル座標系での方向をローカル座標系での方向に変換します(※1)
rotation
FromToRot(vector from, vector to)
訳文第一引数のベクトルから第二引数のベクトルへの回転をクォータニオンで返します
rotation
FromEuler(number pitch, number yaw, number roll)
訳文Pitch(x), Roll(y), Yaw(z)の角度をクォータニオンとして返します。x, y, zはOrientation inputから取得しなくても問題ありません
rotation
FromEuler(vector angles)
訳文ベクトルのx, y, z成分からなるオイラー角をクォータニオンとして返します
vector
ToEuler(rotation angles)
訳文オイラー角からx, y, zの角度を返します
number
Angle(rotation r)
訳文クォータニオンからその方向の単位ベクトルの角度を数値として返します(※1)
number
Angle(vector v, vector w)
訳文ベクトルvとベクトルwの2点間の角度を返します
vector
Axis(rotation r)
訳文クォータニオンからその方向の単位ベクトルを返します(※1)
vector
setX(vector vector, number new x)
訳文第一引数のベクトルのx成分を第二引数で置き換えます(※1)
vector
setY(vector vector, number new y)
訳文第一引数のベクトルのy成分を第二引数で置き換えます(※1)
vector
setZ(vector vector, number new z)
訳文第一引数のベクトルのz成分を第二引数で置き換えます(※1)
vector
outputV(number i)
訳文i番目の出力末端における直前のフレームの出力を返します。直前の出力がベクトルでなかった場合は(0, 0, 0)を返します(※1)
number
output(number i)
訳文i番目の出力末端における直前のフレームの出力を返します。直前の出力が数値でなかった場合は0を返します
例:a,(a>output(1))+output(2)→","で出力先が変わるため、"a"がoutput(1)に格納され、"(a>output(1))+output(2)"がoutput(2)に格納されます。aが0より大きくなると直前のaであるoutput(1)を超えるためa>output(1)がtrueすなわち1となるので1+output(2)の結果がoutput(2)に入ります。これはいわゆるカウンタです(下の方で解説します)
Properties 属性(※一部順不同)
number
(vector v).x
訳文ベクトルvのx成分を返します 例(第1入力末端にベクトル(1,2,3)をつないだ状態で):a.x→1
number
(vector v).y
訳文ベクトルvのy成分を返します 例(第1入力末端にベクトル(1,2,3)をつないだ状態で):a.y→2
number
(vector v).z
訳文ベクトルvのz成分を返します 例(第1入力末端にベクトル(1,2,3)をつないだ状態で):a.z→3
number
(rotation q).x
訳文v3.9.0.0で追加
クォータニオンqの第一引数を度数として返します。.xは.pitchと書いても機能します 例(第1入力末端にRotation[Quaternion]をつないだ状態で):a.x→(対応した角度), a.pitch→(a.xと同様の角度)
number
(rotation q).y
訳文v3.9.0.0で追加
クォータニオンqの第二引数を度数として返します。.yは.yawと書いても機能します 例(第1入力末端にRotation[Quaternion]をつないだ状態で):a.y→(対応した角度)
number
(rotation q).z
訳文v3.9.0.0で追加
クォータニオンqの第三引数を度数として返します。.zは.rollと書いても機能します 例(第1入力末端にRotation[Quaternion]をつないだ状態で):a.z→(対応した角度)
number
(vector v).magnitude
訳文ベクトルvの大きさを数値で返します 例(第1入力末端にベクトル(2,4,4)をつないだ状態で):a.magnitude→6
number
(vector v).sqrMagnitude
訳文ベクトルvの大きさの2乗を数値で返します 例(第1入力末端にベクトル(2,4,4)をつないだ状態で):a.sqrMagnitude→36
rotation
(rotation r).inverse
訳文クォータニオンrの共役クォーニタオンr̅(回転はそのままにxyz軸がすべて反転)を返します 例:(第1入力末端にRotation(0°,356°, 0 ゚ )をつないだ状態で):a.inverse→(0°,4°, 0 ゚ )
Operators 演算子(※一部順不同)
number
(number x) + (number y)
訳文x + y 例:1 + 2→3
integer
(integer x) + (integer y)
訳文x + y 例:1(int) + 2(int)→3(int)
number
(integer x) + (number y)
訳文x + y。整数と数値が逆でも数値が返ってきます 例:1(int) + 2→3, 1 + 2(int)→3
text
(text x) + (text y)
訳文v3.8.2.0で追加
x + y 例:"Advanced" + "Cannon"→"AdvancedCannon"
vector
(vector v) + (vector w)
訳文v + w 例:(1, 2, 3) + (4, 5, 6)→(5, 7, 9)
number
(number x) - (number y)
訳文x - y 例:1 - 2→-1
integer
(integer x) - (integer y)
訳文x - y 例:1(int) - 2(int)→-1(int)
number
(integer x) - (number y)
訳文x - y。整数と数値が逆でも数値が返ってきます 例:1(int) - 2→-1, 1 - 2(int)→-1
text
(text x) - (text y)
訳文x - y。文字列yが1字のときは、文字列xに含まれるすべての文字列yが取り除かれます 例:"AdvancedCannon" - "Cannon"→"Advanced", "aabbabab"-"b"→"aaaa", "aabbabab"-"bb"→"aaabab"
vector
(vector v) - (vector w)
訳文v - w 例:(1, 2, 3) - (4, 5, 6)→(-3, -3, -3)
vector
(vector v) x (vector w)
訳文v x w。ベクトル積です 例:Forward(0, 0, 1) - Up(0, 1, 0)→(-1, 0, 0) (※Unityでは左手系のため通常とはベクトルの向きが異なること、Z軸が正面であることに注意しましょう)
number
(number x) * (number y)
訳文x * y 例:2 * 3→6
integer
(integer x) * (integer y)
訳文x * y 例:2(int) * 3(int)→6(int)
number
(integer x) * (number y)
訳文x * y。整数と数値が逆でも数値が返ってきます 例:2(int) * 3→3, 2 * 3(int)→6
number
(vector v) * (vector w)
訳文v * w。スカラー積です 例:(1, 2, 3) * (4, 5, 6)→32
vector
(rotation r) * (vector v)
訳文ベクトルvをクォータニオンrだけ回して得られるベクトルを返します
vector
(number x) * (vector v)
訳文ベクトルvをx倍したベクトルを返します。数値とベクトルが逆でもベクトルが返ってきます 例:2*(1, 2, 3)→(2, 4, 6)
vector
(integer x) * (vector v)
訳文ベクトルvをx倍したベクトルを返します 整数とベクトルが逆でもベクトルが返ってきます 例:2(int)*(1, 2, 3)→(2, 4, 6)
rotation
(rotation r) * (rotation s)
訳文クォータニオンrにクォータニオンsの回転を上乗せします
number
(number x) / (number y)
説明x / y 例:13125 / 10000→1.3125
number
(integer x) / (integer y)
説明x / y 例:13125(int) / 10000(int)→1.3125
number
(number x) / (integer y)
説明x / y。整数と数値が逆でも数値が返ってきます 例:13125 / 10000(int)→1.3125
vector
(vector v) / (number x)
訳文ベクトルvをxで除したベクトルを返します 例:(1, 2, 3) / 5→(0.2, 0.4, 0.6)
vector
(vector v) / (integer x)
訳文ベクトルvをxで除したベクトルを返します 例:(1, 2, 3) / 5(int)→(0.2, 0.4, 0.6)
vector
(vector v) / (rotation r)
訳文ベクトルvをクォータニオンrだけ逆に回して得られるベクトルを返します
number
(number x) % (number y)
説明xをyで割ったときの余りの数値を返します 例:5 % 2→1
integer
(integer x) % (integer y)
説明xをyで割ったときの余りの整数を返します 例:5(int) % 2(int)→1(int)
number
(number x) ^ (number y)
説明xをy乗した数値を返します 例:5 ^ 2→25
number
(integer x) ^ (integer y)
説明xをy乗した数値を返します 例:5(int) ^ 2(int)→25
number
(vector v) ^ (number x)
説明ベクトルvの大きさのx乗を数値で返します 例(第1入力末端にベクトル(2,4,4)をつないだ状態で):a ^ 3→216
number
(T x) = (T y)
説明同一の型x, yに対し両者が等しければ数値1を、等しくなければ数値0を返します 例:3 = 3→1, 3(int) = 3(int)→1, "3(int)" = "3(int)"→1
number
(T x) != (T y)
説明同一の型x, yに対し両者が等しくなければ数値1を、等しければ数値0を返します 例:3 != 3→0, "a" != "b"→1
number
(number x) > (number y)
説明xがyより大きいなら数値1を、以下なら数値0を返します 例:1 > 1→0
number
(integer x) > (integer y)
説明xがyより大きいなら数値1を、以下なら数値0を返します 例:1(int) > 1(int)→0
number
(number x) >= (number y)
説明xがy以上なら数値1を、未満なら数値0を返します 例:1 >= 1→1
number
(integer x) >= (integer y)
説明xがy以上なら数値1を、未満なら数値0を返します 例:1(int) >= 1(int)→1
number
(number x) < (number y)
説明xがy未満なら数値1を、以上なら数値0を返します 例:1 < 1→0
number
(integer x) < (integer y)
説明xがy未満なら数値1を、以上なら数値0を返します 例:1(int) < 1(int)→0
number
(number x) <= (number y)
説明xがy以下なら数値1を、より大きいなら数値0を返します 例:1 <= 1→1
number
(integer x) <= (integer y)
説明xがy以下なら数値1を、より大きいなら数値0を返します 例:1(int) <= 1(int)→1
number
(number x) & (number y)
説明xとyが共に≠0なら数値1を、どちらかが=0なら数値0を返します 例:1 & -1→1, 0 & 2→0
number
(integer x) & (integer y)
説明xとyが共に≠0なら数値1を、どちらかが=0なら数値0を返します 例:1(int) & -1(int)→1, 0(int) & 2(int)→0
number
(number x) and (number y)
説明x=0なら数値xを、x≠0で数値yを返します 例:0 and 5→0, -1 and 5→5
integer
(integer x) and (integer y)
説明x=0なら数値xを、x≠0で整数yを返します 例:0(int) and 5(int)→0(int), -1(int) and 5(int)→5(int)
number
(number x) | (number y)
説明x, yのどちらかが≠0なら数値1を、共に0なら数値0を返します 例:0 | 5→1, 0 | 0→0
number
(integer x) | (integer y)
説明x, yのどちらかが≠0なら数値1を、共に0なら数値0を返します 例:0(int) | 5(int)→1, 0(int) | 0(int)→0
number
(number x) or (number y)
説明x=0なら数値yを、x≠0で数値xを返します 例:0 or 5→t, -1 or 5→-1
integer
(integer x) or (integer y)
説明x=0なら整数yを、x≠0で整数xを返します 例:0(int) or 5(int)→5(int), -1(int) or 5(int)→-1(int)
number
-(number x)
説明xに-1掛けたものを数値で返します
integer
-(integer x)
説明xに-1掛けたものを整数で返します
vector
-(vector v)
説明ベクトルvの逆ベクトルを返します
number
+(number x)
説明xを返します
integer
+(integer x)
説明xを返します
vector
+(vector v)
説明ベクトルvを返します
number
!(number x)
説明x=0なら1を、≠0で数値0を返します
integer
!(integer x)
説明x=0なら1を、≠0で整数0を返します
AnyType
(number condition)?(AnyType if true):(AnyType if false)
訳文conditionに0以外の数値が入ったとき、if true部分を、それ以外はif false部分の計算結果を返します。if(a=0,if false,if true)もしくはif(a!=0,if true,if false)で同様の出力を得られます 例:a?1:-1→a=0のとき-1、a≠0のとき1を返します。
AnyType
(integer condition)?(AnyType if true):(AnyType if false)
訳文上記の演算子の整数バージョン

alpha test 4.3.0.11で追加・変更されたコンポーネント

alpha test 4.3.0.11で追加されたコンポーネント
英名名称、説明
追加
Anchor
名称ピン留め
説明BBの作業面において、設置した場所にTabキーを押下して即座に移動できる。設置した順に視点が切り替わる。右側のEditorの一番下のプルダウンから選択して移動することもできる
追加
Quaternion Splitter
名称クォータニオン→オイラー変換
説明クォータニオンをオイラー角(pitch, yaw, roll)の3つに分割し、それぞれアウトプットノードに出力する
追加
Vector3 Splitter
名称ベクトル分解
説明3次元ベクトルを各成分(x, y, z)に分解し、それぞれアウトプットノードに出力する
追加
Vector3 Combiner
名称ベクトル合成
説明各成分(x, y, z)に相当するインプットノードの値から3次元ベクトルを出力する
追加
Vector Magnitude
名称ベクトル長
説明ベクトルの長さを出力する
追加
Distance 2D
名称2点間距離
説明2点間の座標からXZ平面座標での距離を出力する

AI Breadboardにのみあるノード

インプット

ノード名名称、説明
Primary target info英名現照準中情報
説明今ターゲットにしている敵と自ビークルとの情報
第一出力末端説明目標が存在すれば1、なければ0を出力
第二出力末端説明目標との距離(m)を出力、なければ0を出力
第三出力末端説明目標の高度(m)を出力、なければ0を出力
第四出力末端説明自ビークルから見た目標の方位角度を出力
Steering point info英名操舵点情報
説明AIがvehicleの操作を始める点の情報
第一出力末端説明操舵点が存在していれば1、なければ0を出力(マニューバ設定の有無)
第二出力末端説明操舵を開始する目標との距離(m)を出力
第三出力末端説明操舵を開始する目標の高度を出力
第四出力末端説明操舵を開始する自ビークルから見た目標の方位角度を出力

コンポーネント

中間演算系

ノード名名称、説明
Behaviour selector英名ビヘイビア選択
説明現在AIに設定されているビヘイビアを選択する。0以外を入力で指定したビヘイビアを稼働(ビヘイビアの追加/削除後は再度ノードを張り付ける必要がある。やらないとnoneかmissingに)。稼働中は1を出力、停止中は0を出力する
Manoeuvre selector英名マニューバ選択
説明現在AIに設定されているマニューバを選択する。0以外を入力で指定したマニューバを稼働(マニューバの追加/削除後は再度ノードを張り付ける必要がある。やらないとnoneかmissingに)。稼働中は1を出力、停止中は0を出力する

実用例

output関数は数を覚えておける関数です。
ちょっと前のことが分かると言ったほうがいいかもしれません。"メモリ"として使うには一工夫必要です。
〇書き方とはたらき

書き方とはたらき

このように書きます。

output(1)

1式目にaを出力し、2式目の出力を見ます。
また|1+1,1-1|のようにカンマで式を区切ることで一つのノードで複数の式を共存させることが出来ます。
出口を式の数だけ増やすと、例の式なら一番目から2が、二番目から0が出力されます。
output(ア)のアは参照する出口を指定するものです。
1を入力

File not found: "1.gif" at page "Bread Boad"[添付]

出力は1でした。

 

入力する数が1,2,3…と増えていくとどうでしょうか。
File not found: "1234.gif" at page "Bread Boad"[添付]

一時停止で注意して見ると、出力が入力より一拍遅れています。

 

output関数は"出力の一瞬過去"の数字を出力しているのです。ですから、始めに1を入力した時も0が1に変わるのに一拍の遅れがありました。
具体的に一瞬とは、デルタタイムという時間の最小単位で約0.02秒程です。

〇メモリにするための一工夫

メモリにするための一工夫
 

記憶が一瞬では困るので、覚えていられるよう工夫してみましょう。
以下は作例です。
出口が複数あるものは最後の出口が目的の出力です

 
  • 覚えたり忘れたりを制御するために入力b増やしました。
     
    普段はaをそのまま出力、b入力でその時点のaを保持します。
    b?output(1):a
     
    普段はaをそのまま出力、b入力でその時点のaを保持します。
    入力入力の説明数式出力出力の説明
    a保持したい数b?output(1):aoutput(1)a⇔aを保持
    b保持と忘却(0か否か)
    普段は0を出力、b入力でその時点のaを保持します。bが0になると0に戻ります。
    入力入力の説明数式出力出力の説明
    a保持したい数b?output(1):a,b?output(1):0output(1)a(内部利用)
    b保持と忘却(0か否か)output(2)0⇔aを保持
    最初は0を出力、b入力でその時点のaを保持します。0経てbを再び入力すると、その時点のaに更新します。
    入力入力の説明数式出力出力の説明
    a保持したい数b?output(1):a,b?output(1):output(2)output(1)a(内部利用)
    b保持と忘却(0か否か)output(2)0⇒aを保持⇒保持内容を更新
     
  • 入力cを増やして"覚える"と"忘れる"を分けました。
     
    最初は0を出力、b入力でその時点のaを保持します。c入力で0に戻ります。(b優先)
    入力入力の説明数式出力出力の説明
    a保持したい数b?output(1):a,b?output(1):output(2)*!coutput(1)a(内部利用)
    b保持(0か否か)output(2)0⇔a
    c忘却(0か否か)
    最初は0を出力、b入力でその時点のaを保持します。c入力で0に戻ります。(c優先)
    入力入力の説明数式出力出力の説明
    a保持したい数b?output(1):a,b?output(1)*!c:output(2)output(1)a(内部利用)
    b保持(0か否か)output(2)0⇔a
    c忘却(0か否か)
    ↑の異式。(c優先)
    入力入力の説明数式出力出力の説明
    a保持したい数b?output(1):a,c?0:b?output(1):output(2)output(1)a(内部利用)
    b保持(0か否か)output(2)0⇔a
    c忘却(0か否か)
     
  • 入力は増やさず数の状態を条件にしました。
     
    aが0になると、aが0でなくなるまで0になる前のaを保持します。
    入力入力の説明数式出力出力の説明
    a0以外の保持したい数
    0で保持
    a+!a*output(1)output(1)a⇔aを保持
    普段は0を出力、aが0になると0になる前のaを保持します。
    入力入力の説明数式出力出力の説明
    a0以外の保持したい数
    0で保持
    a,!a*(output(1)+output(2))output(1)a(内部利用)
    output(2)0⇔aを保持
    aが変化すると変化前のaを次の変化まで保持します。
    入力入力の説明数式出力出力の説明
    a保持したい数
    数の変化で保持
    a,!(a=output(1))*output(1)+(a=output(1))*output(2)output(1)a(内部利用)
    output(2)0⇒aを保持⇒保持内容を更新
    aが前回より大きければ更新します。
    入力入力の説明数式出力出力の説明
    a保持したい数
    保持内容を上回ると更新
    a>output(1)?a:output(1)output(1)0⇒aを保持⇒保持内容を更新
    aが前回より大きければ更新します。b入力で0に戻ります。
    入力入力の説明数式出力出力の説明
    a保持したい数
    前回を超えると更新
    a>output(1)?a:output(1)*!boutput(1)0⇒aを保持⇒保持内容を更新
    b忘却(0か否か)

〇メモリを応用してタイマーを作ろう

メモリを応用してタイマーを作ってみよう

何秒から数え始めたかをメモリで覚えておけばタイマーが作れそうです。
以下は作例です。
出口が複数あるものは最後の出口が目的の出力です

 
a入力からc秒間1を出力。
入力入力の説明数式出力出力の説明
aタイマー開始(0か否か)a?b+c:output(1),output(1)>boutput(1)保持開始タイムに任意の秒数を足したもの(内部利用)
bTotal(Timeのタブにあります)output(2)0⇒1(C秒間)⇒0
c任意の秒数
a入力からc秒後に一瞬1を出力。
入力入力の説明数式出力出力の説明
aタイマー開始(0か否か)a?b+c:output(1),output(1)=boutput(1)保持開始タイムに任意の秒数を足したもの(内部利用)
bTotal(Timeのタブにあります)output(2)0(C秒間)⇒1(一瞬)⇒0
c任意の秒数
普段は1を出力、a入力からc秒間だけ0を出力。
入力入力の説明数式出力出力の説明
aタイマー開始(0か否か)a?b+c:output(1),output(1)<boutput(1)保持開始タイムに任意の秒数を足したもの(内部利用)
bTotal(Timeのタブにあります)output(2)1⇒0(C秒間)⇒1
c任意の秒数

〇ラッチを作ってみよう

ラッチを作ってみよう

スイッチを押している間だけしか部屋の明かりが点かなかったら大変不便ですね。a=1といった条件分岐だけではそんなスイッチになってしまいます。
ここまでは数字を覚える"メモリ"でしたが、次はONかOFFかだけのスイッチ、"ラッチ"です。
条件を満たしたことを覚えていられるよう工夫してみましょう。
以下は作例です。
出口が複数あるものは最後の出口が目的の出力です

 
a入力でON、aが0になってもONを保持します。bが入力でOFFにします。(OFF優先)
入力入力の説明数式出力出力の説明
aON(0か否か)(a+output(1))*!b>0output(1)0⇔1
bOFF(0か否か)
ON優先
入力入力の説明数式出力出力の説明
aON(0か否か)(a+!b*output(1))>0output(1)0⇔1
bOFF(0か否か)
OFF優先
入力入力の説明数式出力出力の説明
aON(0か否か)b?0:a?1:output(1)output(1)0⇔1
bOFF(0か否か)
ON優先
入力入力の説明数式出力出力の説明
aON(0か否か)a?1:b?0:output(1)output(1)0⇔1
bOFF(0か否か)
OFF優先
入力入力の説明数式出力出力の説明
aON(0か否か)b?0:a|output(1)output(1)0⇔1
bOFF(0か否か)
ON優先
入力入力の説明数式出力出力の説明
aON(0か否か)a?1:output(1)*!boutput(1)0⇔1
bOFF(0か否か)
 

メモリに似た機能ですが変化する数を保持せず済むのでメモリより短く書けます。
ONかOFFだけ保持するので、可否を0と1で表すタイプの演算子と相性が良いです。
ONは0でなければいいというのも楽チンです。

〇カウンタを作ろう。

カウンタを作ろう

output(1)+1と書くとどうなるのでしょうか。
鳥を数えるカチカチ、カウンタを作ってみましょう。

 
output(1)+1
 

前回の出力に1を足して出力すると書いてあるので、どんどん数が増えていきます。
これを一瞬だけ作動させて1づつ足そうと思います。
以下が作例です。
出口が複数あるものは最後の出口が目的の出力です

 
  • まず一瞬だけ作動する式を考えます。
    a入力で一瞬だけ1を出力します
    入力入力の説明数式出力出力の説明
    a作動(0か否か)!a,a?output(1):0output(1)aが0の間は1を出力します(内部利用)
    output(2)0⇒1(一瞬)⇒0
    ↑の異式
    入力入力の説明数式出力出力の説明
    a作動(0⇔1)a,a>output(1)output(1)aを出力します(内部利用)
    output(2)0⇒1(一瞬)⇒0
     
  • 次に入力中は数が増加し、入力が無いときは数を保持する式を考えます。
    a入力で出力がデルタタイムごとに+1し、a入力が0のときは現在の数を保持します。
    入力入力の説明数式出力出力の説明
    a開始(0か否か)a?output(1)+1:output(1)output(1)0,1,2,3…
    a入力で出力がデルタタイムごとに+1し、a入力が0のときは現在の数を保持します。b入力で0に戻ります。
    入力入力の説明数式出力出力の説明
    a開始(0か否か)b?0:a?output(1)+1:output(1)output(1)0⇔0,1,2,3…
    b忘却(0か否か)
     
  • 二つの式を繋ぐとカウンターになります。
    a,a>output(1)_output(2)を接続_a?output(1)+1:output(1)
     
  • 式を一つにまとめました。
    aが0から1に変わる度に+1します。
    入力入力の説明数式出力出力の説明
    aカウントする信号(0⇔1)a,(a>output(1))+output(2)output(1)aを出力(内部利用)
    output(2)0,1,2,3…
    aが0から1に変わる度に+1します。b入力で0に戻ります。
    入力入力の説明数式出力出力の説明
    aカウントする信号(0⇔1)a,b?0:(a>output(1))+output(2)output(1)aを出力(内部利用)
    b忘却(0か否か)output(2)0⇔0,1,2,3…
    aが0から1に変わる度に+1します。上限bに達すると0に戻ります。
    入力入力の説明数式出力出力の説明
    aカウントする信号(0⇔1)a,b=output(2)?0:(a>output(1))+output(2)output(1)aを出力(内部利用)
    bカウントの上限output(2)0⇒0,1,2,3…b⇒0
    aが変動する度に+1します。b入力で0に戻ります。
    入力入力の説明数式出力出力の説明
    aカウントする信号a,b?0:!(a=output(1))+output(2)output(1)aを出力(内部利用)
    b忘却(0か否か)output(2)0⇔0,1,2,3…

〇自機と敵機の高度を比較し、PIDへ出力。

自機と敵機の高度を比較し、PIDへ出力
  • AI接続タイプ
    高度を最低100m、敵機がそれ以上なら自機は+30mする動作です。例外処理はきついので無視してます。
    AIbrad_TargetAlt_sample_01.png

コメント

  • 乙です!わかりやすい素敵! -- EMR? 2019-10-14 (月) 17:08:25
    • DrivesとPropulsionに補足ですが、複数入力があった場合に前者は値を上書き(或は動作不良?)、後者は値を加算します。 -- EMR? 2019-10-14 (月) 17:17:35
    • Maths Evaluatorの出力末端は複数の式をカンマで区切って書き、式の数だけ末端を増やしてあげると前から順に出力されます。 -- EMR? 2019-10-14 (月) 17:23:53
      • "a+b,b+c"で1番目の末端からa+b、2番目からはb+cの結果が出力されます。 -- EMR? 2019-10-14 (月) 17:39:00
      • 関連して、number output(x)はどの末端から前回出力した値を出力するかを(x)に数字で書いて指定できます。 -- EMR? 2019-10-14 (月) 17:35:00
      • なので"a+b,b+c,output(2)"と書けば末端からは、1番a+b、2番b+c、3番1フレーム前までのb+cを出力となるそうで。 -- EMR? 2019-10-14 (月) 17:51:53
  • あじゃじゃいますうう! -- うぃれ? 2019-10-17 (木) 20:28:56
    • 編集できれば追加オナシャス!!( -- うぃべ? 2019-10-17 (木) 20:29:55
      • 編集経験と整った作文りょくがないのれす!!やるだけやってみます -- EMR? 2019-10-19 (土) 01:28:20
      • Propulsion、Maths EvaluatorとExpression、number output(x)の箇所に追加しました。やって実感、wikiを編集なさる方の尊さ…! -- EMR? 2019-10-19 (土) 03:38:18
      • アジャイマアアス!!さぁ仲間入りを( -- うぃべ? 2019-10-20 (日) 12:51:16
      • 調査ありがとうございます。参考例貼ってみました。もっときれいにしたいですが、ひとまず実例とか見れたら楽な人もいるかなと思って。もしかしたらツールで作成したほうよいのかもしれないですね。 -- 2019-10-21 (月) 23:55:13
      • 具体的な使用方法に移動させときますねー -- 2019-12-15 (日) 20:57:30
  • output関数についての解説を作ってみました。 -- EMR? 2019-12-31 (火) 04:10:55
    • 「便利なoutput関数」の作例にrubyさん作テンプレートを改変して適用しました。-- EMR? 2020-01-01 (水) 23:49:56
    • 式の誤りを修正しました。 -- EMR? 2020-01-01 (水) 23:52:40
    • 目次から飛べるように展開内の題だけ外に出しました。 -- EMR? 2020-01-01 (水) 23:54:15
  • 船底の左右にスクリューを取り付け、左舷側をroll_rightにし、右舷側をroll_leftに設定した場合、通常のPIDブロックでは問題なくroll角の制御が出来るのですが、bread_boadのPID機能を使用する場合、左舷と右舷のスクリューの設定を逆にしないと上手くいきません。バグなのでしょうか? -- 2020-01-03 (金) 22:27:51
    • たしかブレボではロールの扱いが逆だったと思います。 -- EMR? 2020-01-11 (土) 13:51:29
  • v2.6.1でノード制限が140から990になったため該当記述を修正。 -- EMR? 2020-06-24 (水) 20:12:01
  • 一部スタイルが崩れていたのと誤字脱字の修正、可読性が悪くなっていた部分を修正しました -- うぃべ? 2020-06-29 (月) 02:18:14
  • switch使って「普段はゼロでGキーが入力されたらn秒間1を出力するよ」というのを作りたいんですが、第二にゼロ入力してるはずなのに何故か1がずっと出力されっぱなしになってしまいます。Timerだと指定秒ごとに起動。コレ何をもってON入力と扱われるんですかね……? -- 2020-09-21 (月) 01:21:00