Я работаю над 2D-платформером и использую cinemachine, чтобы следить за своим игроком.
Когда игрок падает с платформы ниже -20 лет, игрок уничтожается и создается как клон к точке возрождения, как и ожидалось, но камера не следует, так как первоначальный игрок уничтожен: она говорит отсутствует на Слот "Follow" .
Есть ли способ решить это? Я предпочитаю использовать Destroy и Instantiate в качестве респавна вместо телепортации исходного игрока в точку респауна.
Это скрипт респауна (GameMaster)
public class GameMaster : MonoBehaviour
{
public static GameMaster gm;
void Start()
{
if (gm == null)
{
gm = GameObject.FindGameObjectWithTag("GM").GetComponent<GameMaster>();
}
}
public Transform playerPrefab, spawnPoint;
public int spawnDelay = 2;
public void RespawnPlayer() {
//yield return new WaitForSeconds(spawnDelay);
Instantiate(playerPrefab, spawnPoint.position, spawnPoint.rotation);
Debug.Log("ADD SPAWN PARITCAL");
}
public static void Killplayer(Player player) {
Destroy(player.gameObject);
gm.RespawnPlayer();
}
}
вот скрипт игрока, если он нужен
public class Player : MonoBehaviour
{
[System.Serializable]
public class PlayerStats
{
public int Health = 100;
}
public PlayerStats playerStats = new PlayerStats();
public int FallBoundary = -20;
void FixedUpdate()
{
if (transform.position.y <= FallBoundary)
{
DamagePlayer(1000);
}
}
public void DamagePlayer(int damage) {
playerStats.Health -= damage;
if (playerStats.Health<=0)
{
Debug.Log("Kill Player");
GameMaster.Killplayer(this);
}
}
}