シグナルとパルス

操作メモ

 ガジェット同士をワイヤーでつなぐとシグナルやパルスが流れます。シグナルやパルスは数値の信号です。 この信号を使ってゲーム動作を組み立てます。

シグナル

 シグナルには2種類あると考えましょう。

  • ON/OFFシグナル
    例)カウンターの完了、スイッチガジェット
  • 強弱シグナル
    例)数値スライダー、シグナル発生器

 ON/OFFシグナルではtrue/falseの値(真か偽か)がやりとりされていますが、ワイヤーをつなげる際には数値で考えた方が分かりやすいです。数値だと、「ONが1」「OFFが0」です。
 一方の強弱シグナルはそのまま数値を持っていて、マイナスだったり0だったりプラスだったりします。

 注意すべきケースは、シグナルを「電源」に接続する場合です。電源に強弱シグナルを接続すると、処理結果に反映されるガジェットがあります。その代表はチュートリアルでも出てくる、ライトでしょう。

光の強さはライトの明るさ設定×電源パワーです

 「OFFが0」「ONが1」という前提に従い、こういった電源は「シグナルの強さ1で、電力供給100%」という扱いになっています(0.1なら10%)。シグナルの強さが2、3と上がればさらに強くなります。

 ライトならイメージしやすいですが、カウンターなどの数値を扱うガジェットも電力の影響を受けるので注意が必要です。

カウンターの電源が50%の例。目標値も結果も半分になっています。

 図のような電源不足のカウンターでは、「完了」アウトプットのシグナルも電源の値に減少してしまいます。逆に電源過多の場合はどうなるかというと、送るのはあくまでONシグナルですので、「完了」で送られる数値は1のまま、大きくはなりません。混乱しますね。

 ガジェットの電源制御には、少しだけ注意が必要だと覚えておきましょう。

 なお「1で100%」という考え方は、電源以外のプロパティ項目にも適用されています。たとえばオブジェクトやペイントのグロウ(発光)です。「20%くらいがちょうどいいかしら、うふふ」なんてノリでうっかり数値スライダー20をつなぐとえらいことになります。いわゆるムスカ状態です。

オウ! イッツア バルス!
2000%の閃光の図

 もし作っているゲームが思い通りに動かず、ロジックの流れにも問題がなさそうなら、強弱シグナルでの電源制御が上手くいっているか、またON/OFFシグナルを大きな数値のように扱っていないか注意してみましょう。

パルス

 バルスじゃないです。Pulseです。

 イメージとしては「瞬間、一回だけ、1が流れる 」 感じです。「すごく短い」のではなく「一回きり」です。ONシグナルを0.1秒流すのとは全然ちがいます。パルスはパルスです。

 処理回数を正確に検出したいとか、「今だ!」とタイミングを制御したい時には、パルスを使います。

 タイマーガジェットで、手直しメニューを開かずにつなげる完了シグナルが、パルスです。タイマー終了(パルス)と明記してあります。

 本ブログの過去記事ではシグナル(1回)などと書いていました。 分かりやすかろうと思ってのことでしたが裏目だったかもしれません。これからはパルスに統一したいと思います。

記事「タイマー」より転載。「パルス」「シグナル」が用意されている

パルスを発生させる

 作業を進めていると、「このシグナルが流れ始めるタイミングでパルスを飛ばしたいけど、どうすれば?」とつまずくかもしれません。シグナルをパルスに変換するようなケースです。そのものずばりのガジェットがあります。シグナル操作マシンです。

シグナル操作マシン

タイマーのとなりにいます

 シグナル操作マシンは、受け取ったシグナルを調整して受け渡すガジェットです。

 調整モードがいくつか用意されていて、その一つとして「パルスをオン」というモードがあります。シグナルを受け取ったらパルスをシュパッと飛ばすモードです。

デフォルトのモード(左端)は、シグナルの最初と最後をスムーズ化するモード

 ちなみに「パルスをオン」モードで秒数の値を変更すると、パルスのスタート/エンドに時間をかけさせることもできます。数値としては、0から1へ、そして1から0へ指定の時間で増減します。面白い使い方がありそうですが、とりあえず「パルスを飛ばしたい」目的であれば、秒数は0のままでOKです。

「今です!」という合図

 基本としては、「パルスは、一回だけ1を送るもの」という考えでいいと思います。

 なお、パルスをシグナルの代わりに使うこともできます。たとえばパルスをガジェットの電源につなげば、一瞬、電源がONになってくれます。シグナルとパルス、実際に作業する分には身構えなくてもいい、小さな違いなのかもしれませんね。

 結果が変わらないとしても、シグナルとパルスを意識して使うようにしていれば、ワイヤーをつなぐ際に自信が持てるようになると思います。

 最後に一口メモですが、パルスをONシグナルに変換するならカウンター(目標値 1)です。

シグナルを止めたくなったらカウンターをリセット

太いワイヤー

 シグナルを複数持つワイヤーは太く表示されます。

 たとえばコントローラーセンサーのスティックは太いワイヤーになっていて、「上下の入力を示す値」と「左右の入力を示す値」の2つの情報を持っています。チュートリアルでは、「スプリッター」ガジェットを通して必要な情報を取り出す方法を学べます。

ほしいシグナルをスプリッターで抽出

0という値

 冒頭、ON/OFFシグナルの話題の時点では触れませんでしたが、OFFシグナルが「流れているか ?」と問われると微妙ですね。目に見えませんので。

 実際には信号は流れていないでしょう。カウンターが未完了の時や、そのガジェットの電源がオフになっている場合などに0が流れていたら不自然です。ただいずれにしろ、いざ判定しようと思えばその数値は0なのです。

 信号がない時にはOFFシグナルが流れていると見なした方が、ワイヤーをつなぐ時にイメージしやすいです。

0が流れていると見なした方が、NOTゲートの先が有効になる流れをイメージしやすい(気がする)
画像は記事「ONとOFFを切り替える」より転載

 この「シグナルがないなら0」という考え方について注意したいのは、前段の太いワイヤーのケースです。太いワイヤーをそのまま判定に使うと思わぬ失敗をするかもしれません。

太いワイヤーそのものの値は?

 注意点です。太いワイヤーをカルキュレーターなどで直接判定すると思わぬミスをします。

 例えばコントローラーセンサーの左スティックのアウトプットを、そのままカルキュレーターにつないで「0」かどうかをチェックしてみてください。上下入力と左右入力、どちらか一方だけで判定されることが分かります。

 正確な数値を判定したい場合は、スプリッターガジェットを通して、必要なワイヤーをしぼり込んでから判定しましょう。

Dreams Universe 一覧に戻る

Dreams Universe
Timer for Gaming

 ひさしぶりのギミック(ロジックシステム)です。 概要  ぶっちゃけ単なるタイマーです。画面右上に時 …

Dreams Universe
XYZ軸をキッチリ移動させる

 3D制作環境ではX/Y/Z軸の座標を扱います。編集の際には対象物を真正面から捉えたり真上から捉えた …

Dreams Universe
エミッターを使ったエレメント作品の注意点

 今回ご紹介するのはエミッターを使ったエレメント作品の注意点です。 注意点を簡単に言うと、スタンプし …