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

ステート

ステートを使うと、オブジェクトのいくつかの見た目を保存して、切り替えられます。照明のスイッチ、ドア、ハイライト、色違いの製品などに使いましょう。

ステートは、オブジェクトの設定を保存したコピーです。位置、色、表示・非表示、選択しているアニメーションなどが含まれます。ステートに切り替えると、オブジェクトはその見た目に戻ります。

ステートを使う場面​

やりたいこと使うもの
照明のスイッチ:オンとオフステート
ドア:閉まっている、開いている、施錠されているステート
3 色展開の製品ステート
ルートに沿って歩くキャラクターアニメーション
計算した量だけ変化するものパッチまたはスクリプト

判断の目安はシンプルです。名前の付いた、決まった数の状況なら、ステートの出番です。連続的に変化するものは、アニメーションで扱います。

ステートを作る​

  1. オブジェクトを選択します。
  2. インスペクターで + new component をクリックし、States を選びます。最初のステート Default に、オブジェクトの今の状態が保存されます。
  3. + add state をクリックします。新しいステートが選択された状態になります。
  4. オブジェクトを変更します。移動する、色を変える、非表示にする、などです。変更は、選択中のステートにそのつど保存されます。
  5. 必要なステートの数だけ、手順 3 と 4 を繰り返します。

ステートをプレビューするには、一覧でそのステートをクリックします。

ステートを選択している間は、編集内容がそのステートに入る

オブジェクトを編集すると、オブジェクト自体ではなく、選択中のステートが変わります。ステートを作っている間は、これで問題ありません。ただし、ステートを選択したままなのを忘れていると、切り替えたあとで変更が「反映されていない」ように見えることがあります。

ステートを切り替える​

イベントで Set state ステップを使います。ステートを選び、必要なら長さとイージングも設定します。

長さを設定すると、なめらかに変化します。オブジェクトは一気に切り替わらず、今の状態から保存した見た目へとなめらかに移ります。アニメーションを作らなくても、アニメーションになります。

切り替える場所方法
イベントSet state ステップ
パッチset_states ノード
スクリプトStates コンポーネントの activeStateId に書き込む

切り替えに反応する​

ステートが変わったオブジェクトで、2 つのトリガーが発火します。

トリガー発火するタイミング
State active選んだステートにオブジェクトが入ったとき
State inactiveオブジェクトがそのステートから出たとき

1 つのイベントが見張るステートは 1 つで、イベントの State フィールドで選びます。そのため、1 つのオブジェクトがステートごとに違う反応をできます。例えば、条件を使わなくても、ドアが開くときと閉まるときに別々の案内表示を出せます。

このトリガーを受け取るのはオブジェクト自身だけ

タップとは違い、ステートの変化はオブジェクトの親には届きません。

ステートを使わずに一部だけ変える​

ステートを丸ごと作らずに、「今のままで、色だけ赤く」したいこともあります。その場合は Override properties ステップを使います。一時的なステートのように、いくつかの値を 1 回だけ適用します。長さとイージングの設定も、Set state と同じようにあります。

ホバーしたときのちょっとしたハイライトや、何かが当たったときのフラッシュに使いましょう。本来のステートは、オブジェクトが実際に持つ状況のために取っておきます。

ステートに保存されるもの​

ステートには、オブジェクトのコンポーネントが保存されます。位置、回転、スケール、マテリアル、表示・非表示など、すべてがまとめて切り替わります。

ステートは 1 つのオブジェクトのもの

ステートには、オブジェクトの子は保存されません。グループをまとめて切り替えたいときは、それぞれのオブジェクトにステートを持たせてください。そのうえで、1 つのイベントからすべてを切り替えます。ステップの Target object フィールドには、複数のオブジェクトを指定できます。

注意点​

  • エディターで選択したままのステートに、編集内容が入ります。オブジェクトが何度も古い見た目に戻ってしまうときは、どのステートが選択されているかを確認してください。
  • 同じオブジェクトでステートとアニメーションを使うと、互いにぶつかります。どちらか一方にしてください。
  • コンポーネントを削除すると、すべてのステートからもそのコンポーネントが削除されます。
  • 選択中のステートがなくなった場合は、最初のステートが使われます。

次へ: パッチ — ノードで組み立てるロジックです。