マッピングノードンの使い方【はじめてゲームプログラミング】

f:id:sadala:20210708145716p:plain


ナビで紹介はされたけど、いまいち何に使うか分かりにくい「マッピングノードン」を解説します。

分かりにくいノードンですが、とっっっっっっっっても大事なノードンなので是非読んでいってくだ…読みましょう。

 

マッピングノードン概要

マッピングノードンは入力された値を別の値に置き換えて出力できるノードンです。

マッピングノードンは「中間・へんかん・マッピング」から呼び出せます。

f:id:sadala:20210708145749p:plain

ノードンとノードンの間に挟まって活躍するノードンなので、ゲーム画面には出てきませんがしっかりと働いているので安心してください。

もし、入出力の値が気になる場合は、「数つきモノノードン」を使って確認しましょう。

 

入出力と設定

マッピングノードンには入力と出力が1つずつあります。

この項目の例は、”入力範囲0~100” ”出力範囲0~10"で説明します。

入力

変換したい値を入力します。

出力

入力された値をもとにマッピングノードンが変換した値が出力されます。

入力はんい と 出力はんい

マッピングノードンで ”どういう変換をするか” 決めることができます。

入力はんいの上限と下限が出力はんいの上限と下限に置き換えられるように、マッピングノードンが入力を変換して出力されます。

はんい制限

入力はんいをもとに入力を置き換えたとき、出力はんいで決めた範囲の外になる数値を制限するかどうか選択できます。

「はんい制限する」場合、出力される値が出力はんいで設定した値を超えないように制限されます。

「はんい制限しない」場合、入力はんいと出力はんいをもとに変換されて、そのまま出力されます。

↔︎(左右両方向の矢印)

「入力はんい」と「出力はんい」それぞれの上限と下限の対応関係を反転できます。

オフのとき、それぞれのつまみの左と左、右と右が対応します。

オンのときは入れ替わり、左と右、右と左が対応します。

例.入力:-10, 0, 60, 100, 105

それぞれ比べやすいよう入力を統一します。

1. 設定は「制限なし」「↔︎反転」オフ

f:id:sadala:20210711201117p:plain

変換された値がそのまま出力されます。

実際の出力は、-1, 0, 6, 10, 10.5

2. 設定は「制限あり」「↔︎反転」オフ

f:id:sadala:20210711201905p:plain

範囲外の数値だけ出力はんいの上限下限にそろえて出力されます。
実際の出力は、0, 0, 6, 10, 10

3. 設定は「制限なし」「↔︎反転」オン

f:id:sadala:20210711202110p:plain

入力はんいと出力はんいの上限と下限の対応関係が反転して出力されます。

実際の出力は、11, 10, 4, 0, -0.5

4. 設定は「制限あり」「↔︎反転」オン

f:id:sadala:20210711202317p:plain

 対応関係が反転し、さらに上限下限にそろえられて出力されます。

実際の出力は、10, 10, 4, 0, 0

 

使い方

一応注意:使い方とか書いてますが、ここに書いてあることが絶対ではないです。サダラが思いついた例を挙げているだけにすぎません。

60フレーム(1秒)で1増える

カメラ系ノードンやれんけつ系ノードンへの入力でよく使います。

入力する値が大きすぎる、もっと滑らかに動いて欲しいと思ったらまさに使い所。

この使い方はナビ(謎解き)でも出てきています。

f:id:sadala:20210711224320p:plain

つなぎ方例

f:id:sadala:20210711224350p:plain

マッピングノードンの設定

f:id:sadala:20210711224425p:plain

ゲーム画面:ZLを押すとカウンターがリセットされてモノが動く

「マッピングノードン」のはんい設定や、「カウンターノードン」の設定を「ループ」や「おうふく」に変更すると動きが変化するので、いろいろと試してみてください。

また、カウンターノードンの出力を直接れんけつノードンにつないでみると、違いが分かりやすいです。

決まった出力(主に0と1)を大きくする

「ヒトノードン」のアクションへの入力を例にとってみましょう。

実はヒトノードンのアクションは詳細設定で決めなくても、入力された値によって変化します。(2ならやったぜ、3ならパンチなど)

しかしボタンノードンの出力は0か1しかないので、ヒトノードンの入力:アクションにつないだだけでは複数のアクションを割り当てられません。

つまり、ボタンごとにアクションを割り当てるとするなら、ボタンノードンの出力がヒトノードンの入力:アクションに行く間に2や3になっている必要があります。

 

え?掛け算ノードンを使えばいい?

定数ノードンと計算ノードンの2つが必要ですよね。

マッピングノードンなら1つのノードンでできるんです。

f:id:sadala:20210711230638p:plain

上:掛け算ノードンを使用 中:ボタンノードンを直接 下:マッピングノードンを使用

f:id:sadala:20210711230813p:plain

1の入力があったときに4を出力するマッピングノードン

f:id:sadala:20210711230942p:plain

3種類のアクションができることが伝わらないヒトノードン

移動量を調整する

上の "カウンターノードンと合わせて動きを滑らかにする” のと "出力を大きくする" のを複合した感じです。

使うのは主にスティックをたおしたらノードンですね。他にはセンサーやモーション系でしょうか。

 

分かりやすいのでヒトノードンで説明します。

スティック→マッピング→ヒトとつないでください。

マッピングノードンは入力範囲を-1から1、出力範囲をいろいろ変更しながら試していきます。

ではまず出力範囲を-2から2にしてみましょう。

ヒトノードンの移動スピードが2倍になります。

次に出力範囲を-0.5から0.5にしてみます。遅くなりましたね。

実感できましたか?

残念ながらヒトノードンのスピードは設定で変更できる上に、そのスピードの設定以上のスピードにはなりません。めちゃくちゃ速いヒトノードン作りたかった……。

 

今回は速さの変化がわかりやすいようにヒトの移動スピードで検証しましたが、実際はスティックの感度が変化しています。FPSの経験がある人なんかはカメラノードンにつないでみるとよく分かりますよ。

f:id:sadala:20210711231622p:plain

マッピングノードンで感度を調整したカメラ

ZLを押していなければUFOを、ZL押していればカメラを動かせるようになっています。

カメラ以外の余計なものが引っ付いているのは、読んでいる途中で「掛け算ノードン使い道ないな」と思った勘のいい人のために紹介しようと思ったからです。

f:id:sadala:20210711232334p:plain

れんけつ系ノードンにも

最初に紹介したなめらかにする使い方に少し手を加えると、スティックなどで自由にモノを動かせるようになります。 

マーカーノードンと組み合わせる

マーカーノードンは基本的に入力が0から1でなければ正常に動作しません。

注意:「まわる」は0から360で1周、2周なら720、「円」は0から360で動作

まあ、ここまで読んでいれば問題ないですよね。

マッピングノードンで出力はんいを0から1にして、マーカーノードンに入力してあげればいいだけです。

あとは適当にスポイトノードンをおけばOK。

f:id:sadala:20210711232729p:plain

いろいろなマーカーノードンにつなぐ