ゲーム制作   Unity ソフトウエア 

Unity ソフトウエアでゲーム制作#1モグラたたき編(10.Playerを作成しよう)

キャッチ画像モグラたたきPlayerを作成

本投稿は2024年9月時点の内容になります。アップデートにより変更となる場合があります。また環境によって違いがあると思いますのであくまで参考として、ご了承ください。

様々な書籍、ブログや動画を参考にさせていただきました。多すぎて一つ一つは紹介できませんが感謝です。

初心者の自分がUnity ソフトウエアでゲームを作ってみました。とりあえずシンプルなものということでモグラたたきに挑戦です。ゲーム作ってみるかという感じになったときに、いいタイミングで某ゲームのイベントシナリオ内ミニゲームにモグラたたきが実装されていたのでUIとかエフェクトとか、諸々の仕様をぱくって参考にして作ってみましたよ。様々なHowToの中の選択肢のひとつとして、同じ初心者さんの参考になればよいです。

\ チェック /

ゲームオブジェクトPlayerを作成します

前回で敵のゲームオブジェクトがだいぶ固まってきましたので、今回はプレイヤーを作成します。

本記事のポイント

  • 以前作成した「UnitStatus」クラスを継承して「PlayerStayus」クラスを作成。
  • 「PlayerStayus」クラスを継承した「player」クラスを作成してゲームオブジェクトにアタッチします。

5.基底クラスを作って継承する の復習的な内容になります。

\ クラスの継承を確認したいときはこちらをチェック /

UnitStatusクラスを継承したPlayerStatusクラスを作る

スクリプトを作成する

  1. プロジェクトでスクリプト「PlayerStatus」を作成。
  2. 「using UnityEngine;」以下に下記のようにコーディングしました。
public class PlayerStatus : UnitStatus
{
    //追加のフィールド
    //スコア
    public int Score { get; set; }
    //レベルアップに必要な経験値
    public int RequiredExp {  get; set; }
    public int NextExp {  get; private set; }

    //コンストラクタ
    public PlayerStatus(string name, int atk, int def, int level, int maxHp, int exp, UnitType unitType)
    : base(name, atk, def, level, maxHp, exp, unitType)
    {
        Score = 0;
        RequiredExp = 5;
        NextExp = RequiredExp;
    }

}

スクリプトざっくり解説

  1. 今回はあまり難しいところはないですね
  2. (7,8)今後レベルアップの計算につかう予定の変数です。

PlayerStatusクラスを継承してPlayerクラスを作成してオブジェクトにアタッチする

スクリプトを作成する

  1. プロジェクトでスクリプト「Player」を作成。
  2. 「using UnityEngine;」以下に下記のようにコーディングしました。
  3. ヒエラルキー上に「空のオブジェクトを作成」。名前は「Player」。このスクリプトをアタッチします。
public class Player : MonoBehaviour
{
    public PlayerStatus PlayerStatus { get; set; }
    [SerializeField] UnitStatusDB unitStatusDB;

    //ScriptableObjectを使った初期化
    public void Setup()
    {
        //GameObjectと同じ名前のステータスを検索
        UnitStatusData unitStatusData = unitStatusDB.GetStatusByName(this.name);

        //各パラメータの設定
        string name = unitStatusData.name;
        int atk = unitStatusData.atk;
        int def = unitStatusData.def;
        int level = 1;
        int maxHp = unitStatusData.maxHp;
        int exp = unitStatusData.exp;
        UnitType unitType = unitStatusData.unitType;

        //新しいインスタンスを作成
        PlayerStatus = new PlayerStatus(name, atk, def, level, maxHp, exp, unitType);
    }
    
    // Start is called before the first frame update
    void Start()
    {
        //確認用のログ
        Debug.Log("名前" + playerStatus.Name);
    }

    // Update is called once per frame
    void Update()
    {

    }

    private void OnEnable()
    {
        Setup();
    }
}

スクリプトざっくり解説

  1. 「Enemy」クラスと基本は同じです。
  2. (29)確認用のログです。

\ 「Enemy」クラスについてはこちらをチェック /

Playerのデータを作成してアタッチします

  1. ScriptableObject「CharacterStatusDB」に2のようにプレーヤーのデータを追加します。
  2. 名前:「Player」、Atk:「1」、Def:「0」、MaxHp:「3」、Exp:「0」、UnitType:「player」としました。
  3. 「Player」スクリプトに「CharacterStatusDB」をアタッチします。
  4. ゲーム再生してコンソールに確認用のログが出てればOKです。

\ ScriptableObjectについてはこちらをチェック /

まとめ

まとめ

  • クラスの継承とScriptableObjectの復習的な内容でした。わからないときは過去記事をチェックしてみてください。
ユニティちゃん公式ホームページへ
ユニティちゃん公式ホームページ
ユニティちゃんライセンス
ユニティちゃんの画像、素材、ライセンスロゴはユニティちゃんライセンス条項を元に使用しています

\ Unityのスクリプトを書くのに役立ちます /

もっと早く教えてほしかった!Unity C#入門

MARU

マケイヌ的おすすめ度

わかりやすい度

目指せ脱初心者

〇おすすめポイント

ボリューム大でC#学習にもよく使う関数のチェックにもOK

×よくないポイント

始めたばかりの人にはちょっと難しい

おすすめ記事

 

プロフィール

マケイヌ

人生のメインストリームから外れた40代の♂。

90年代オルタナにはまり、文字通りメインストリームから逸脱。 その後もたびたび人生から逃亡。

心が動いた作品の紹介や 自分のちいさな経験、HowToを発信できればと日々模索中。

1年後までにイラストと写真のポートフォリオをつくりたい。

記:2019年12月

▼プロフィールはこちら

Follow me

アーカイヴ