メインコンテンツまでスキップ

パッチ

パッチは、描いて作る挙動です。単純だが値を持てず計算もできないイベントと、何でもできるが コードを書かせる script の、ちょうど中間に位置します。

「…ただしスコアが 10 を超えているときだけ」「…毎回もう少し遠くへ動かす」と言いたくなった、 その最初の瞬間にパッチへ手を伸ばしてください。

グラフは本物の script になります

パッチは解釈されるのではなくコンパイルされるので、手で書いたコードとまったく同じ速さで動きます。 生成された script はコードパネルでいつでも読めます。グラフが意図どおりかを確かめる、いちばん 速い方法でもあります。

各ノードとそのポート: パッチノードのリファレンス — 24 カテゴリー、203 ノード。

ノードは 4 種類

種類見分けかた何か
Event出力だけ。うち 1 つがパルスグラフの始まり。起動時、タップ時、毎フレームなど
Effectパルスの入力と出力がある順番に何かを行う
Controlパルスを分岐・反復させる分岐、ゲート、繰り返し、for-each、once、遅延
Dataパルスがまったくない値。数値、合計、component のフィールドなど

パルスのケーブルが、ものごとの起きる順番です。イベントノードからこれをたどれば、流れを 読んでいることになります。データのケーブルは値を運ぶだけで、順番を持ちません。

ポートとケーブル

ポートには型(数値・真偽値・文字列・ベクトル・色・オブジェクト)があり、型が合わないものは つながりません。実行する前に、かなりの数の間違いを捕まえてくれます。

ベクトルのポートは xyz に展開できるので、1 つだけつないで残り 2 つは入力する、 といったことができます。

つながずに残した入力は、ノードに打ち込んだ値を使います。たいていそれが望ましい形です。 変わる部分だけを配線してください。

どのオブジェクトを使うかをノードに伝える

component のノード(「get transform」「set material」など)は、どのオブジェクトかを知る必要が あります。

バインドを空のままにすると、このオブジェクト、つまりパッチが付いているオブジェクトを意味します。 指定すれば、そのオブジェクトに対して動きます。

知っておくと便利なことが 2 つあります。

  • get 系のノードは寛容です。 そのオブジェクトが持っていない component を読んでも、グラフが 壊れるのではなく、何も返らないだけです
  • set 系のノードは、埋めた項目しか書き込みません。 触っていない項目はそのまま残ります
回転のポートは度です

画面で見えるほかのものと同じです。パッチと script の間で値をやりとりするときだけ気をつけてください。 script の回転はラジアンです。

カタログの中身

カテゴリー見つかるもの
events30 の起点。起動、フレーム、タップ、キー、衝突、トラッキング
componentsあらゆる component の読み書き
math · vector · logic · string算術、比較、ベクトル、文字列
flow分岐、ゲート、繰り返し、for-each、once、遅延、シーケンス
stateカウンター、トグル、タイマー、スムージング
entities · lifecycleオブジェクトの検索、作成、スポーン、破棄
physicsインパルス、フォース、速度、レイキャスト
netマルチプレイヤー。送信、受信、共有状態、スポーン
globals · variables · messagingほかの patch や script と共有する値
uiインターフェースカードの変数の読み書き
functions別の patch、または script の呼び出し

パッチを使い回す

グラフをリソースとして保存すると、ほかのキャンバスに置けるようになります。ふるまいは、どう 組み立てたかで決まります。

組み立てかたできるもの
入力ノードも出力ノードもなしビヘイビア。置くだけで動きます。配線は不要です
入力・出力・パルス入力があるステップ。パルスが来たら実行され、そのあと出力が使えます
入力と出力があり、パルスがない関数。出力は、読まれた場所で計算されます

ソケットは、中に置いた入力ノード・出力ノードから決まります。1 つ足せば、呼び出し側すべてに 現れます。パッチを編集すれば、それを呼んでいるすべてがその場で更新されます。

関数パッチには、自分のオブジェクトがありません

純粋な関数の中に「このオブジェクト」は存在しないので、オブジェクトや component のノードはそこに 置くものではありません。関数はデータ・計算・ロジックにとどめ、シーンへの働きかけは呼び出し側で 行ってください。

パッチからは script も呼べます。カタログにないものに手を伸ばすときの、いつものやりかたです。

グラフより長生きする値

保持のしかたは 3 通りで、届く範囲が違います。

置き場共有される相手
variablesこの 1 つのパッチのノード
globalsプロジェクト内のすべての patch・script・イベント
messages聞いている人すべて。名前を付けた一度きりの通知として

globals のスコープは 2 つ。プロジェクト全体(space をまたいでも残る)と、space 限定(まっさらから 始まる)です。名前は配線ではなく入力で指定するので、経路が予測しやすくなります。

非常口

JavaScript を直接受け取るノードが 2 つあります。expression は値を返し、action は文を 実行します。script が触れるものはすべて、その中でも使えます。

これらは、カタログに足りないちょっとしたもののためにあり、常用するためのものではありません。 たくさん書いていると気づいたら、script を書いてグラフから呼んでください。

うまくいかないとき

コードパネルを開いてください。コンパイルできないグラフ(データ配線のループ、action ノードの壊れた JavaScript)は、そこで教えてくれます。

そして、壊れたパッチがシーンを道連れにすることはありません。ほかのものは動き続けます。


次へ: ゲーム操作 — 人が歩き回れるようにする。