【Unity】VisualScriptingチュートリアル1
手っ取り早く動かしてみることを目標に。
「3秒後にxを2動かして止まる」
という挙動をとってみます
前準備
まず適当なオブジェクトをシーンに作成。
このCubeに
- StateMachine コンポーネント
を取り付けます
次に今から作成するビジュアルスクリプトを保存する先を作成します
Inspecor上に New というボタンを押すと保存先を選択する流れになります
適当なフォルダに保存しちゃいましょう
このファイルはScriptableObjectとなっており、内部に情報を持ちます
編集
次に Edit Graph
を押すと実際にビジュアルスクリプトを編集する画面が表示されます
空きスペースを右クリックすると操作パネルが開きます。
- ScriptState を作成
- Startを右クリックして Make Transition
- StartからScript Stateをつなげる
Startは開始地点
ScriptStateユニットは実際の動きを行う場所、例えばオブジェクトを回転させたり、移動させたりなど。
そして途中の黄色い部分は遷移するための条件を書く場所です
つまり「3秒後にxを2動かして止まる」を分解すると
3秒後に というのは「黄色の部分」
xを2動かす というのは「ScriptStateユニット」
が担当します
まずは「xを動かす」部分を記述します
- ScriptStateユニットをダブルクリック
- なにもない部分を右クリックして検索窓に「Translate」と入力して配置
- Xに0.01を入れる
- OnUpdateユニットとTranslateユニットをつなぎ合わせる
この状態で再生しても何も起きません
開始していることをScriptStateに教えてないためです
なので次はScriptStateに問題なく遷移するための処理を追加します
- StartとScriptStateの中間にあったマークをダブルクリック
- 右クリックから「Start」といれて検索
- StartとScriptStateをつなぎ合わせる
その後PlayModeに移行するとCubeがX移動します
これはMonobehaviourで言うところの「 Startメソッドで、UpdateのたびにX移動するスクリプトをアタッチした」と同じ意味になります
次に「3秒後」という条件を追加します
- OnStartを削除してOnUpdateをつける
- if と検索して ifユニットを間に取り付ける
- GetTime と検索して 時間を取得するユニットを取り付ける
- GreaterOrEqual ユニットを取り付けて 「GetTimeした結果が3以上であれば if true を流す」ようにする
実行してグラフを見ると GetTime から値が流れ、3以上になった瞬間に TriggerTransition が起動する絵が見れます
ここまでの実装で ある条件により動きの実行を制御する 事ができました
次はすでに動いている状態から「2動いて止まる」という事後条件を実装していこうと思います