Unity

Unityで3Dシューティングアクションを作ろう④

投稿日:

今回やること

  • 体力ゲージ
  • ゲームオーバー
  • ゲームクリア
  • シーンを変えた時に画面が暗かった時の対応

体力ゲージ

体力ゲージの設定は以下の手順を踏みます。

  • HandleSlideAreaを削除する(これをしないとツマミが残った状態になります)。
  •  

  • CanvasのUI Scale ModeをScale With Screenに変える。
    ※これは体力ゲージの表示の仕方を変えて、画面の大きさに合わせて表示するようにしています。
  • 体力ゲージの位置調整を行います。作業画面だと変な位置に見えるのですがフル画面で再生するとちょうど良い位置になるように調整して下さい。
  • 体力ゲージの土台の色を変えます。ダメージを受けている部分です。
  • 体力ゲージのメインの色を変えます。残り体力の部分です。

※位置が調整しにくいのですが、画像を参考に調整してみてください。

Playerスクリプトへの追記

using~に追記していきます

using~の説明

using UnityEngine.UI;

UnityのUI機能を使用する場合に追加します。
UI機能とはUserInterfaceの略で今回の体力ゲージであったり、画面上に表示されるボタンや画像や文字などのことを指します。

変数を宣言する部分の追記内容

変数を宣言する部分の説明

private float PlayerHP;

プレイヤーのHPを定義しています。ダメージを受けた時に、
この数値を減らすことによってダメージ処理を行います。

public GameObject slider;

sliderとはどのゲームオブジェクトのことを指すのか定義しています。

private Slider _slider;

体力ゲージの値を_sliderと定義しています。

void Startの追記内容

void Startの説明

_slider = slider.GetComponent();

_sliderにSliderの値を代入しています。

PlayerHP = 5;

PlayerHPを5にする。
ゲーム開始時のプレイヤーの体力を5に設定しています。
必ずスライダーのValueのMax値と同じにして下さい。7

void Updateの追記内容

void Updateの説明

_slider.value = PlayerHP;

_sliderの値をPlayerHPの値と同じにしています。これによりPlayerHPが減ると_sliderの値も減り、
ゲージも変化します。

コルーチンの内容

コルーチンの説明

IEnumerator Damage()

Damageコルーチンを定義しています。

PlayerHP -= 1;

PlayerHPを1減らしています。

yield return new WaitForSeconds(0.5f);

0.5秒待ちます。この待ち時間を入れないとダメージを受けた時に一気に体力が減ってしまいます。

衝突判定の内容

衝突判定の説明

void OnTriggerEnter(Collider collision)

衝突判定の内容をここから記入します。

if (collision.gameObject.tag == “Enemyattack”)

もし衝突したオブジェクトのタグがEnemyattackなら

StartCoroutine(“Damage”);

Damageコルーチンを開始します。

完成形のスクリプト

追記内容は※6と表示しています。

テストプレイをしてみると…


敵の攻撃を受けるとダメージを受けてゲージが減っています

ゲームオーバー

Playerスクリプトに追記

以下追記内容です

using~の説明

using UnityEngine.SceneManagement;

シーンの遷移を行う時に追加します。今回はゲームオーバーやゲームクリアを表示する際に
画面を変えるので使用しています。

void Updateの追記内容

void FixedUpdateの説明

if (PlayerHP == 0)

もしPlayerHPが0なら。if文で条件を変数の値にする場合、=ではなく、==にします。

SceneManager.LoadScene(“GameOver”);

シーンをゲームオーバーにします。シーンを変える場合は
SceneManager.LoadScene(”シーンの名前”);です。

完成形のスクリプト

追記内容は※7と表示しています。

テストプレイをしてみると…

※早くゲームオーバーになるように敵を増やしています。
 敵を増やしたい場合はEnemyを選択してCtrl + D で増やして敵を好きな場所に配置して下さい。

体力がなくなったらゲームオーバーになりました。

ゲームクリア

変数を宣言する部分の記入内容

変数を宣言する部分の説明

private GameObject[] enemyObjects;

enemyObjectsという配列を作成しています。配列というのは同じ属性を持つ一つのグループのことです。
今回はEnemyというタグがついたオブジェクト全てを指します。つまり敵キャラ全てのことです。く

void FixedUpdateの追記内容

void FixedUpdateの説明

enemyObjects = GameObject.FindGameObjectsWithTag(“Enemy”);

配列enemyObjectsが何を指すのかを決めています。今回はEnemyというタグがついたオブジェクト全てに
指定しています

if (enemyObjects.Length == 0)

もしenemyObjectsの数が0なら。先程配列で指定したオブジェクトの数が0になったらという意味で
要するに敵を全員倒したらです。

SceneManager.LoadScene(“GameClear”);

シーンをGameClearに変えます。

完成形のスクリプト

追記内容は※8と表示しています。

テストプレイをしてみると…


敵を全員倒すとGameClearのシーンに変わります。

シーンを変えた時に画面が暗かった時の対応

以上でチュートリアルは終わりです♪
お疲れ様でした♪

このサイトについて

ここには、自己紹介やサイトの紹介、あるいはクレジットの類を書くと良いでしょう。

検索

このサイトについて

ここには、自己紹介やサイトの紹介、あるいはクレジットの類を書くと良いでしょう。

検索

-Unity

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

Scratch → Unity対応早見表

使い方の動画はこちら♪ 動き

※3つの数字は回転する軸を表していて、左から順に、x、y、z [crayon-5d0b2ead61604 …

no image

攻撃判定

①当たり判定を出したいキャラクターにスクリプトを取り付ける ②取り付けたスクリプトのobjに出現させたい当たり判定をドラッグ&#038 …

no image

Scratch → Unity対応表を使って迷路ゲームを作ってみよう

今回作るゲーム 今回やることの説明 こんな感じの迷路ゲームを作っていきます。 今回はキャラの移動を実装していきます。 それ以外の要素はパッケージに入っているので、 パッケージのPlayerスクリプトに …

no image

Unityで3Dシューティングアクションを作ろう①

チュートリアルの内容 3D空間を走り回り、弾を飛ばして敵を倒すゲームを作ります。 今回やること プレイヤーの移動 アニメーションの遷移 カメラの追従 事前に準備するもの プレイヤー(待機アニメーション …

no image

Unityの便利機能を使いこなそう #4 NavmeshAgentで敵のAIをつくろう

敵がついてくる範囲の設定 NavMeshAgentの追加と設定 敵が主人公を追いかけるスクリプトの作成

スクリプトを作成したら… スク …

ゲタバコ倶楽部へようこそ

  • 16458総閲覧数:
  • 81今日の閲覧数:
  • 10201総訪問者数:
  • 53今日の訪問者数:

住所
Tokyo,Japan

営業時間
月火: 終日
水~金: 10:00 AM – 10:00 PM

このページはゲタバコ先生の日々思うことや活動を発信するページです
仕事の依頼、メッセージ等お気軽にご連絡ください

getabakosensei@gmail.com