今回は、1秒間隔でON/OFFが切り替わる簡単な仕組みを作っていきます。
Contents
動作環境
このチュートリアルは、以下の環境で作成しております。
Unity | 2019.4.8f1 |
Arbor | 3.7.0 |
バージョンによっては説明と異なる箇所があるかと思いますのがご了承ください。
チュートリアル用プロジェクト作成
まずは、チュートリアル用にプロジェクトを作成してください。
プロジェクト名 | ArborTutorial01 |
モード | 3D |
インポートするアセット | Arbor |
プロジェクトの作成やArborのインポートについては「Arborを使用するための準備」を参照してください。
ArborFSMオブジェクトの作成
ArborFSMコンポーネントがついたGameObjectを作成してステートマシンを使用できるようにします。
- Hierarchyウィンドウの+ボタンをクリック。
- メニューの「Arbor > ArborFSM」を選択。
このArborFSMがステートマシンを動かすためのコンポーネントとなります。
Arbor Editorウィンドウの表示
ArborFSMを編集するにはInspectorウィンドウではなくArbor Editorウィンドウで行います。
ArborFSMのInspectorにあるOpen Editorボタンをクリックして表示してください。
クリックするとArborFSMが選択された状態のArbor Editorウィンドウが表示されます。
Arbor Editorウィンドウはよく使用することになるため、使いやすい位置にドッキングしておくといいでしょう。
OFFステートの作成
今回はON/OFFの2つの状態のみを扱うため、最初に2つのステートを作成してしまいます。
- グラフ上の何もないところを右クリック。
- メニューから「ステート作成」を選択。
- ステート名を「OFF」にする。
※もしステート名を変更せずに確定してしまった場合は、名前部分をダブルクリックすると入力モードに切り替わります。
ONステートの作成
つづけて、ONステートも作成します。
- グラフ上の何もないところを右クリック。
- メニューから「ステート作成」を選択。
- ステート名を「ON」にする。
「
開始ステート」について
何もない状態からステートを作成すると、一番最初に作成したステートが「開始ステート」になります。
「開始ステート」とは、実行開始時に初めに有効になるステートです。
今回の場合では、OFFステートが「開始ステート」になっています。
「
開始ステート」を変更するには
- 「
通常ステート」の設定アイコンをクリック。
- メニューから「開始ステートに設定」を選択。
今回は、OFFステートが「開始ステート」で問題ないので変更した場合は元に戻しておいてください。
時間経過でステートを切り替え
続いて、ステートの挙動を設定していきます。
挙動の追加は、設定アイコンの「挙動追加」から行います。
- OFFステートの設定アイコンをクリック。
- メニューから「挙動追加」を選択。
ここでは、時間経過で遷移させたいのでTimeTransitionを使用します。
- 表示された挙動選択ウィンドウから「Transition > TimeTransition」を選択。
TimeTransitionは「Seconds」で指定した秒数経過後に「Next State」で接続したステートに遷移する挙動です。
ここでは遷移する時間を1秒とします。
- TimeTransitionのSecondsを1に設定。
そして、「Next State」をONステートに遷移するよう指定します。
遷移はStateLinkフィールドをドラッグ&ドロップして、遷移先に接続すると行われます。
- 「Next State」をドラッグ&ドロップでONステートに接続。
これで1秒経過後にONステートに遷移するようになりました。
OFFステートのTimeTransition
Time Type | Normal(変更なし) |
Seconds | 1 |
Next State | ONステートに接続 |
TimeTransitionについて詳しくは、TimeTransitionのリファレンスを参照してください。
他にも、Arborにはあらかじめ100以上の挙動が組み込まれていますので、どのような挙動があるかはArborリファレンスを参照してみてください。
ONステートの設定
ONステートにも同様に時間経過で遷移するように設定していきます。
ここでは、すでにOFFステートに設定済みのTimeTransitionがあるため、コピー&ペーストを行います。
- OFFステートにあるTimeTransitionの設定アイコンをクリック。
- メニューから「コピー」を選択。
次にONステートにコピーしたTimeTransitionを貼り付けます。
- ONステートの設定アイコンをクリック。
- メニューから「挙動を貼り付け」を選択。
TimeTransitionの各パラメータ含めてコピー&ペーストされました。
ONステートのTimeTransitionからはOFFステートに遷移させたいので、「Next State」をOFFステートに接続し直します。
- 「Next State」をドラッグ&ドロップでOFFステートに接続。
これで、1秒間隔でON/OFFが切り替わる動作が作れました。
ONステートのTimeTransition
Time Type | Normal(変更なし) |
Seconds | 1 |
Next State | OFFステートに接続 |
ここまでの動作確認
一度実行して動作を確認してみましょう。
- 「
プレイボタン」を押して実行。
実行中にArbor Editorウィンドウを見ると、「現在ステート」が1秒間隔で切り替わるのが確認できます。
動作が確認できたら実行を停止します。
このままでは、Game Viewでは何も変化が見えないため、Cubeを置いて視覚的に見えるようにしてみましょう。
Cubeオブジェクトの作成
- Hierarchyの+ボタンをクリック。
- メニューの「3D Object > Cube」を選択。
シーンにCubeオブジェクトが作成されました。
OFFステートで非アクティブ化
OFFステートでCubeオブジェクトを非アクティブ状態にするにはActivateGameObjectを使用します。
- OFFステートの設定アイコンをクリック。
- メニューから「挙動追加」を選択。
- 挙動選択ウィンドウから「GameObject > ActivateGameObject」を選択。
ActivateGameObjectが追加されたら設定を行います。
- 「Target」の
ボタンを押し「Constant」を選択。
- 「Target」は参照する方法を複数のタイプから選べるFlexibleGameObjectという特殊な型を使用しています。
- 今回は直接オブジェクトを参照するので、Constantを選択してオブジェクト参照フィールドを表示しています。
- 「Target」をCubeオブジェクトに設定。
- 「Begin Active」と「End Active」は変更せず、チェックをしない。
これで、OFFステートの時はCubeオブジェクトが非アクティブになります。
OFFステートのActivateGameObject
Target | Cubeオブジェクト |
Begin Active | チェックなし(変更なし) |
End Active | チェックなし(変更なし) |
ActivateGameObjectについて詳しくは、ActivateGameObjectのリファレンスを参照してください。
ONステートでアクティブ化
ONステートに入るとCubeオブジェクトをアクティブ状態にしたいため、OFFステートと同様にActivateGameObjectを使用して設定します。
ここでもOFFステートのActivateGameObjectからコピー&ペーストしてしまいましょう。
- OFFステートにあるActivateGameObjectの設定アイコンをクリック。
- メニューから「コピー」を選択。
- ONステートの設定アイコンをクリック。
- メニューから「挙動を貼り付け」を選択。
「Target」にCubeオブジェクトが設定された状態でコピー&ペーストが出来ました。
続いて、ONステートでアクティブ状態にするように設定します。
- 「Begin Active」と「End Active」にチェック。
これで、ONステートに入るとCubeオブジェクトがアクティブになります。
ONステートのActivateGameObject
Target | Cubeオブジェクト |
Begin Active | チェック |
End Active | チェック |
動作確認
最後にCubeオブジェクトが切り替わるか実行して確認しましょう。
- 「
プレイボタン」を押して実行。
Cubeオブジェクトのアクティブが1秒間隔で切り替わるのがわかるようになりました。
Arbor Editorウィンドウも確認してみると、ステートの切り替わりに連動して正常にCubeオブジェクトが切り替わっているのがわかります。
次のステップ
以上で「基礎編」は完了です。
「基礎編」完了をツイート
次回は「コーディング編」となります。
Arbor用スクリプトの作成方法について解説します。