シグナルを反転する
最終更新 : 2019/02/23
最終更新 : 2019/02/23
今回のテーマはシグナルを反転させることです。
プラスならマイナスに、マイナスならプラスに変換します。そんな処理を一体どういう時に使うのかというと、FPSゲームなんかの視点移動が代表格です。コントローラーのスティック操作の上下を反転させるとか、左右を反転させるなんていうオプションが、いろんなFPSゲームについています。
と、いうことで、シグナル反転の方法をご紹介します。
いきなり残念なご報告ですが、この方法はスティック操作の反転には使えません。なぜかというと、OFF(0)がON(1)になってしまうからです。
とりあえず、NOTゲートを使った場合のインプットとアウトプットの関係をまとめます。
| インプット | アウトプット | | ---- | ---- | | 0 | 1 | | 1 | 0 | | 0.1 | 0.9 | | -0.1 | -0.9 | | 100 | 0 | | -100 | 1 |
このように、NOTゲートはON/OFFシグナルを前提にした動作をしていることが分かります。 (関連記事:シグナルとパルス)
OFFがONになる。これをコントローラー操作で考えてみると、スティックを触っていないのに、全力で倒している扱いになるということです。
また0.1は-0.1になってほしいところですが、実際には0.9となります。そんなわけでスティックの入力反転には使えないというわけです。
とはいえ、ロジックを作ろうとすればON/OFFシグナルを反転させる場面はたくさん出てきます。NOTゲートは結局大活躍しますので、日頃から感謝の気持ちを忘れないようにしましょう。
転載回数の多いこの画像は、「ONとOFFを切り替える」より。NOTゲートは右下で圧倒的な存在感を放っています。
一番理解しやすいと思うのがこの方法です。0なら0、100なら-100、-100なら100にしたい……だったら-1を掛ければ良いじゃん、というだけの話です。
この方法を思い付いたのは良いものの、反転する/しないを切り替えようとした時、ワイヤー接続がぐちゃぐちゃになってしまったという人がいるかもしれません。ということで、つなぎ方の一例を紹介します。
こんな感じです。
左下の反転を決めるロジックはお好みで。
ワイヤーをつなぐ時に「ノード」をはさんで、そのノードの電源制御をします。これで片方のワイヤーだけが生きるようになります。また、ノードをこのように使う場合、ノードの手直しメニューで「ポートなし」を選択しておきましょう。そうすればマイクロチップに入り口、出口が作られなくなります。
※Rスティックの値が本当に反転してるか知りたい場合、スプリッターを通してX、Yの値をチェックしてください。
筆者は前段の「-1を掛ける」で満足していたんですが、Mm公式「FPSの素(テンプレート)」にてシグナル反転ロジックを発見しましたのでご紹介します。
シグナル操作マシンの手直しメニューを開くと、「インプットを反転」というモードがあります。「これか!」と思うのは早計です。これでは結局、OFFシグナルはONシグナルに反転されてしまいます。
使うのはおとなり(一番右側)の「リマップをカスタム」というモードです。これは波形を自分で調整できるという優れものです。これを調整することでシグナルを反転させることができます。さらに「キーフレーム」と組み合わせることで、反転する/しないを簡単に切り替えられるようになります。その手順は次の通りです。
設定の完成図です。ななめの線は、「キーフレームの再生時にこうなりますよ」という意味です。
数値のプラスマイナスは反転しつつ、「0は0」のままにする、という設定のできあがりです。
この方法の優れているところは、反転する/しないの切り替えが簡単なところです。キーフレームに電源を入れるかどうか、それだけです。
こんなにすっきりします。
ちなみにシグナル操作マシンの「アウトプットのスムージング」はお好みで調整してください。「FPSの素」では0.1秒が設定されています。
自由に作れるのがドリームズユニバースの楽しいところ……とはいうものの、今回ばかりは、シグナル操作マシンとキーフレームの組み合わせが、一番スマートかもしれませんね。
溟犬一六(めいけんいちろ)。雑種のクリエイター。ハンドル名はガバチョなど