Math(計算)
数値を計算するノードです。全16種。float を受けて float を返す形なので、 ツマミの値を別の値に変換する中継として使います。
3つの構造
ポート構成はノード自身ではなく、継承している基底クラスが決めています。
| 構造 | ポート | 該当ノード |
|---|---|---|
| 二項演算 | A / B → Result | Add / Minus / Multiply / Divide / Modulo / Pow / Max / Min / Average / Abs |
| 単項演算 | A / Trigger → Result | Ceil / Floor / Round / Trunc / Fract |
| 独自 | A / B / T / Trigger → Out | Lerp |
ノード一覧
| ノード | 説明 |
|---|---|
| Add | A + B |
| Minus | A − B |
| Multiply | A × B |
| Divide | A ÷ B。B が 0 のときは出力を更新しません(下記の注記) |
| Modulo | A を B で割った余り。ループするカウンタを作るときに使います |
| Pow | A の B 乗 |
| Max | A と B の大きいほう。値の下限止めに使えます |
| Min | A と B の小さいほう。値の頭打ちに使えます |
| Average | A と B の平均 |
| Abs | A の絶対値。B ポートは使われません(下記の注記) |
| Ceil | A を切り上げ |
| Floor | A を切り捨て |
| Round | A を四捨五入 |
| Trunc | A を 0 方向へ切り捨て |
| Fract | A の小数部分だけを取り出します。0〜1 を繰り返す信号を作れます |
| Lerp | A と B を T で線形補間します |
知っておくと引っかからないこと
Trigger は「サンプル&ホールド」ではありません
Ceil / Floor / Round / Trunc / Fract にある Trigger は、入力を止めて値を保持するものではありません。
A は常に流れていて、値が変わるたび Result が出ます。Trigger がするのは 今の計算結果をもう一度下流へ押し出すことだけです。
triggerInput.OnTriggerChanged.Subscribe(_ => { OutResult(); }).AddTo(this);
拍に合わせて下流を再発火させたいときに使ってください。A を止める用途には使えません。
Divide のゼロ除算は「無視」されます
B が 0 のとき、Divide は出力そのものを更新しません。
if (currentValueB.Value == 0) return;
NaN や 0 が出るのではなく、直前の値が残り続けます。落ちないので安全ではありますが、 下流から見ると「値が固まった」ようにしか見えません。動きが止まったら B を疑ってください。
Lerp の T は 0〜1 にクランプされます
Mathf.Lerp を使っているため、T に範囲外の値を入れても A と B の外側へは出ません。端で止まります。
A→B を飛び出させたいときは Lerp ではなく Multiply と Add を組み合わせてください。
Abs の B ポートは何にも繋がっていません
Abs は二項演算の基底クラスを継承しているため A / B 両方のポートが生えますが、
実装は Mathf.Abs(A) だけで B を一切参照していません。B に挿しても何も起きません。
二項演算は A / B どちらが動いても再計算します
Add や Multiply などの二項演算は、A と B のどちらか一方が変わった時点で結果を出し直します。 片方を「設定値」、もう片方を「動く信号」として使う組み方で問題ありません。




























