Unityで2DのシンプルゲームをVS(Visual Scripting)で作ってみる

Visual Scriptingは旧Boltと言われたものを、正式にUnityに取り込んだもののようですが、ゲームエンジンでこのようなスクリプティングを使うのはUnityだけではないですが、おそらく最もポピュラーなのがUnityのVSではないかと思うので、Scratchで最初に作ってみるような2Dゲームを作ってみます。

全体の画面はこんな感じで、右からTreeが移動してきてPlayerはジャンプしてそれを避ける、プレイ開始からの時間表示を行い、PlayerがFloorから落下してしまったらタイマー停止というもの。猫スプライトとサウンド(Coin)はScratchからインポートしています。

オブジェクトを動かすまでは、

https://qiita.com/K3nsuke/items/a1946fe4dac3513f012b

をそのまま使っています。

実際の動作は、

以下から、オブジェクトごとに割り付けられたスクリプト他を記載します。

<Treeの移動を操作するScript machine>

Treeがあるところまで移動(左側の見えなくなる位置)したら、乱数でスタート位置を右側に設定してやります。

 

<Playerの状態チェンジ>

state machineでFloorに設置状態とJumping状態を識別して遷移条件を記述します。

 

<遷移条件 -> Jumping, -> Grounded>

Spaceキー押されたらジャンプ状態に移行

Floorに接地したらGrounded 状態に移行

 

<Jumpingに対応するスクリプト>

Jumpingステートに入ったら、上方向に力を加えてジャンプ、同時に音を出します。

 

<時間表示のためのcanvas設定>

ElapsedTimeCtlにはElapsed変数を追加して、時間更新と停止のスクリプトをアタッチします、Elapsedは単なるラベルです。

 

 

<ElapsedTimeCtlへのScript machine>

Elapsedタイムの更新と停止、停止はPlayerがFloorから押し出されたことをカスタムイベントとして受け取って対処。

 

<scene変数の追加>

sceneの中の共通変数(GameEnd)を定義します。

 

<ゲーム終了判定するScript machine>

Playerにアタッチされて、自分自身がFloorの外に出たことを判定してカスタムイベントを発行します。

この例からもわかるように、裏側ではC#のスクリプトが動いているので、C#から独立したスクリプトブロックにはなっていなくて、多分にC#のコードブロックを意識したものとなっています。したがってVSに慣れればC#でコード書くのも実はそれほど障壁があるものではないと思います。

 

admin