本投稿は2024年9月時点の内容になります。アップデートにより変更となる場合があります。また環境によって違いがあると思いますのであくまで参考として、ご了承ください。
様々な書籍、ブログや動画を参考にさせていただきました。多すぎて一つ一つは紹介できませんが感謝です。
初心者の自分がUnity ソフトウエアでゲームを作ってみました。とりあえずシンプルなものということでモグラたたきに挑戦です。ゲーム作ってみるかという感じになったときに、いいタイミングで某ゲームのイベントシナリオ内ミニゲームにモグラたたきが実装されていたのでUIとかエフェクトとか、諸々の仕様をぱくって参考にして作ってみましたよ。様々なHowToの中の選択肢のひとつとして、同じ初心者さんの参考になればよいです。
\ チェック /
目次
ゲームオブジェクトPlayerを作成します
前回で敵のゲームオブジェクトがだいぶ固まってきましたので、今回はプレイヤーを作成します。
本記事のポイント
- 以前作成した「UnitStatus」クラスを継承して「PlayerStayus」クラスを作成。
- 「PlayerStayus」クラスを継承した「player」クラスを作成してゲームオブジェクトにアタッチします。
5.基底クラスを作って継承する の復習的な内容になります。
\ クラスの継承を確認したいときはこちらをチェック /
UnitStatusクラスを継承したPlayerStatusクラスを作る
スクリプトを作成する
- プロジェクトでスクリプト「PlayerStatus」を作成。
- 「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;
}
}
スクリプトざっくり解説
- 今回はあまり難しいところはないですね
- (7,8)今後レベルアップの計算につかう予定の変数です。
PlayerStatusクラスを継承してPlayerクラスを作成してオブジェクトにアタッチする
スクリプトを作成する
- プロジェクトでスクリプト「Player」を作成。
- 「using UnityEngine;」以下に下記のようにコーディングしました。
- ヒエラルキー上に「空のオブジェクトを作成」。名前は「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();
}
}
スクリプトざっくり解説
- 「Enemy」クラスと基本は同じです。
- (29)確認用のログです。
\ 「Enemy」クラスについてはこちらをチェック /
Playerのデータを作成してアタッチします
- ScriptableObject「CharacterStatusDB」に2のようにプレーヤーのデータを追加します。
- 名前:「Player」、Atk:「1」、Def:「0」、MaxHp:「3」、Exp:「0」、UnitType:「player」としました。
- 「Player」スクリプトに「CharacterStatusDB」をアタッチします。
- ゲーム再生してコンソールに確認用のログが出てればOKです。
\ ScriptableObjectについてはこちらをチェック /
まとめ
まとめ
- クラスの継承とScriptableObjectの復習的な内容でした。わからないときは過去記事をチェックしてみてください。
\ Unityのスクリプトを書くのに役立ちます /
もっと早く教えてほしかった!Unity C#入門
MARU
おすすめ記事
Unity ソフトウエアでゲーム制作#1モグラたたき編(28.ゲームに効果音…
Unity ソフトウエアでゲーム制作#1モグラたたき編(27.エフェクト2パ…
Unity ソフトウエアでゲーム制作#1モグラたたき編(26.エフェクトその1)
Unity ソフトウエアでゲーム制作#1モグラたたき編(25.プレハブバリア…
Unity ソフトウエアでゲーム制作#1モグラたたき編(24.Buttonで…
Unity ソフトウエアでゲーム制作#1モグラたたき編(23.シンプルなアニ…