注意
本記事で掲載されている動作の実装方法及びプログラムのソースコードは最適な方法ではない可能性があります。今後不具合等が判明した場合には修正及び改良をおこなう可能性があります。
また今後自分で同機能を実装する場合の参考にする可能性もあるためソースコードだけではなく説明しつつ記事を進めていきます。
Unityによる自作ゲーム開発進捗その26になります!
今回は戦闘シーンにミニマップの要素を追加し、キャラクター達の位置が判断出来るようにしました。
新しいスクリプトを1つ追加します。
以下に動画でのコピー用にソースコードを掲載しています。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BattleMap : MonoBehaviour{
[SerializeField]
GameObject[] m_battle_object = new GameObject[6];
[SerializeField]
GameObject[] m_map_object = new GameObject[6];
private float m_time_count = 0.0f;
private void FixedUpdate() {
m_time_count += Time.deltaTime;
if (m_time_count > 0.2f) { // タスク1
for (int l_loop = 0; l_loop < 6; l_loop += 1) {
Vector3 l_position = m_battle_object[l_loop].transform.position;
l_position.x = l_position.x / 10 + 200;
l_position.y += 3;
l_position.z = l_position.z / 10;
m_map_object[l_loop].transform.position = l_position;
}
}
}
}
/*
[規則]
p_ 外部アクセス
m_ メンバー変数
l_ ローカル変数
a_ 引数
[説明]
[バージョン]
2021-07-09 バトルマップにキャラクターの位置反映
[タスク]
タスク1 臨時リフレッシュ間隔200ms
*/
様々な実装方法がありそうな項目で迷いに迷いました。
採用した方法は上空からマップ全体を映した画像を作成し、【Render Texture】を使用し【UI】として表示する事にしました。
画像の大きさを本来のバトルエリアの10分の1サイズにした上でX方向に200ズラした位置においておき、マップ上に表示するキャラクターパーツを戦闘中のキャラクター位置からXに200ズラした上で10分の1数値を加算しています。
後半で負荷に苦しむ事になった場合に違う方法を模索するべき項目かもしれません…。