[Unity] Visual Scripting でつくる簡単ゲーム「防空ゲーム」その2
ビジュアルスクリプティングでつくる「防空ゲーム」の解説第二弾です。ここでは敵をつくります。
1.敵キャラクターを制作する
それでは敵キャラクターをつくりましょう。
まず、スプライト画像の準備をします。
Projectウィンドウで使うイラストを選択します。
Inspectorが画面で以下のように設定して、Apply(適用)をクリックします。これで、キャラクターの大きさを変えることができます。
キャラクターのオブジェクトを作ります。
次にスプライト画像を設定します。
名前を「Enemy01」にします。
※このEnemyのあとの番号(01)を元に各種類の敵キャラクターのHPや攻撃力などを割り当てています。
Inspector画面でSprite画像を設定します。
Animation -> Create をクリックします。
アニメーションの名前を入れてSaveします。
Projectウィンドウのインスペクタ画像をまとめて選択し、Animationウィンドウにドラッグします。
Samplesを調整してアニメーションの速さを調整します。
Samplesが表示されていない場合は、Animation画面右上の設定ボタンからShow Sample Rateにチェックをいれてください。
次にHito時のアニメションも追加いますので、新しいアニメーションクリップを追加します。
Hitと名前をつけてSaveします。
Hit用の画像をまとめて選択し、Animetionのタイムライン上にドラッグします。
Sampleを20にします。
Animator画面を開きます。
作ったIdle StateとHit StateをTransitionでつなぎます。
ステートを右クリック -> Make Transition でTransitionを追加します。
AnimatorのParameters -> + でパラメーターを追加します。
Bool方のパラメーターを追加します。
パラメーター名をHitにします。
Idle -> Hit の Transition をクリックしてInspectorを変更します。
Has Exit Time のチェックを外します。
Conditions の+をクリックしてStateの遷移条件を設定します。
Condition を Hit が True の時に設定します。
Hit -> Idle の Transition をクリックしてInspectorを変更します。
これでアニメーション関係の設定は終わりです。
敵オブジェクト選択肢インスペクタを編集します。
敵オブジェクトに以下のコンポーネントを追加します。
1.Capsule Colider 2D
2.Rigidbody 2D
3.Script Machine
Variables はScript Machineを追加した時点で追加されます。
スクリプトマシーン(Script Machine)は最初↓のようになっています。
Newを押して新しいスクリプトグラフを追加しましょう。
グラフ(Graph)名を「EnemyControllerFly」にしてSaveします。
2.敵キャラクターのプログラムをつくる
敵キャラクターのプログラムを作ります。
このプログラムはすべての種類の敵キャラクター共通のプログラムになります。
敵キャラクターを選択し、インスペクター画面 -> Script Machine -> Edit Graphをクリックします。
プログラムで使うObject変数(Variables)をつくります。
Object変数はオブジェクト事に単一です。
次にScene変数(Variables)をつくります。
Scene変数はシーンごとに共通で使えます。
■EnemyHP EnemyPower
– 敵キャラクターの種類ごとのHPや攻撃力などを管理
■BulletPower
– 弾の種類ごとの強さを管理
■PlayerHP
– プレイヤーのHP
■GameSchedule
– 1桁目は出現までの待ち時間
– 2〜3桁目は敵の種類番号
【地面についた時の処理】
敵が地面に着地したときに、パーティクルを出してから自分を消す。
【敵のHPを設定】
自分の名前の(例:Enemy01の01部分)番号を読み取り番号に合わせた自身のHPをEnemyHPから読み取り、それを設定する。また、敵の速度をy=-1に設定する。
【弾があたった時の処理】
弾があたったとき、当たった弾の威力だけHPを引く。
HPが0以下の場合、パーティクルを呼び出して自身を消す。
HPが0以上の場合、
i.アニメーションパラメーターHitをTureにし、
ii. 速度をy=0にする
iii.0.5秒まつ
iv. アニメーションパラメーターHitをFalseにする
v. 速度をy=-1に戻す
3.ゲーム管理ようのプログラムをつくる
敵の出現タイミング、プレイヤーのHP管理とゲームオーバー管理などを行うプログラムを作ります。
その前に、必要なUIと空のオブジェクトを作り名前をGameControllerにします。
GameControllerオブジェクトに新しいグラフ[名前:FlyGameController]
を新規作成します。
それでは2つプログラムを追加します。
【敵の出現管理】
リスト変数GameScheduleを読み取り敵のそこから出現タイミングと敵の種類を取得します。取得した情報をもとに敵を出現させます。
【プレイヤーのHP管理とゲームオーバー管理】
敵キャラクターがタイルマップに触れたときにプレイヤーのHPを減らします。HPが0になった場合、ゲームオーバーの表示をします。