【Unity】プレイヤーが消えたら同じ場所から復活させる方法(リプレイ機能)
この記事は以下の記事を行ったことを前提として進めます。
上の記事では、プレイヤーが消えたら、ゲームの開始位置から復活しました。
今回は、"消えた場所"から復活させる方法を紹介します。
完成動作
※わかりやすいようにプレイヤーが再生したら色が黄色に変わるようにしています。
プレイヤーを再生(リプレイ)させるスクリプトを修正
1.ReplayPlayer.csを以下のように修正する
追加/修正と記載されているところを変える。
using UnityEngine;
public class ReplayPlayer : MonoBehaviour
{
[SerializeField]
[Tooltip("プレイヤーのプレハブを設定")]
private GameObject playerPrefab;
// 追加:プレイヤーが消える直前の位置
private Vector3 playerPosition;
// Update is called once per frame
void Update()
{
// 設定したplayerPrefabと同じ名前(今回は"PlayerSphere")のGameObjectを探して取得
GameObject playerObj = GameObject.Find(playerPrefab.name);
// playerObjが存在していない場合
if (playerObj == null)
{
// playerPrefabから新しくGameObjectを作成
// 修正:作成時に作成する場所(playerPosition)を指定
GameObject newPlayerObj = Instantiate(playerPrefab, playerPosition, Quaternion.identity);
// 追加:リプレイされたことがわかりやすいように色を変えた
newPlayerObj.GetComponent<Renderer>().material.color = Color.yellow;
// 新しく作成したGameObjectの名前を再設定(今回は"PlayerSphere"となる)
newPlayerObj.name = playerPrefab.name;
// ※ここで名前を再設定しない場合、自動で決まる名前は、"PlayerSphere(Clone)"となるため
// 13行目で探している"PlayerSphere"が永遠に見つからないことになり、playerが無限に生産される
// どういうことかは、23行目をコメントアウトしてゲームを実行すればわかります。
}
else
{
// 追加:プレイヤーの位置を都度更新
playerPosition = playerObj.transform.localPosition;
}
}
}
完成
これでプレイヤーが再生されるときは、消えた場所から再生するようになった。
ディスカッション
コメント一覧
まだ、コメントがありません