【Unity】VisualScriptingチュートリアル1

手っ取り早く動かしてみることを目標に。

「3秒後にxを2動かして止まる」

という挙動をとってみます


前準備

まず適当なオブジェクトをシーンに作成。

f:id:toshizabeth:20210917010405p:plain

このCubeに

を取り付けます

f:id:toshizabeth:20210917202419p:plain

次に今から作成するビジュアルスクリプトを保存する先を作成します


Inspecor上に New というボタンを押すと保存先を選択する流れになります

適当なフォルダに保存しちゃいましょう


このファイルはScriptableObjectとなっており、内部に情報を持ちます


編集

次に Edit Graph を押すと実際にビジュアルスクリプトを編集する画面が表示されます

f:id:toshizabeth:20210917204621p:plain


空きスペースを右クリックすると操作パネルが開きます。

  1. ScriptState を作成
  2. Startを右クリックして Make Transition
  3. StartからScript Stateをつなげる

f:id:toshizabeth:20210917211610g:plain

Startは開始地点

ScriptStateユニットは実際の動きを行う場所、例えばオブジェクトを回転させたり、移動させたりなど。

そして途中の黄色い部分は遷移するための条件を書く場所です


つまり「3秒後にxを2動かして止まる」を分解すると

 3秒後に というのは「黄色の部分」

 xを2動かす というのは「ScriptStateユニット」

が担当します


まずは「xを動かす」部分を記述します

  1. ScriptStateユニットをダブルクリック
  2. なにもない部分を右クリックして検索窓に「Translate」と入力して配置
  3. Xに0.01を入れる
  4. OnUpdateユニットとTranslateユニットをつなぎ合わせる

f:id:toshizabeth:20210917212642g:plain

この状態で再生しても何も起きません

開始していることをScriptStateに教えてないためです

なので次はScriptStateに問題なく遷移するための処理を追加します


  1. StartとScriptStateの中間にあったマークをダブルクリック
  2. 右クリックから「Start」といれて検索
  3. StartとScriptStateをつなぎ合わせる

f:id:toshizabeth:20210917233610g:plain

その後PlayModeに移行するとCubeがX移動します

f:id:toshizabeth:20210917234144g:plain

これはMonobehaviourで言うところの「 Startメソッドで、UpdateのたびにX移動するスクリプトをアタッチした」と同じ意味になります


次に「3秒後」という条件を追加します


  1. OnStartを削除してOnUpdateをつける
  2. if と検索して ifユニットを間に取り付ける
  3. GetTime と検索して 時間を取得するユニットを取り付ける
  4. GreaterOrEqual ユニットを取り付けて 「GetTimeした結果が3以上であれば if true を流す」ようにする

実行してグラフを見ると GetTime から値が流れ、3以上になった瞬間に TriggerTransition が起動する絵が見れます

f:id:toshizabeth:20210918101017g:plain


ここまでの実装で ある条件により動きの実行を制御する 事ができました

次はすでに動いている状態から「2動いて止まる」という事後条件を実装していこうと思います