transfer between scenes

This commit is contained in:
Vova
2023-12-11 19:35:11 +02:00
parent e7f082a774
commit 0c4d9b2481
9 changed files with 154 additions and 231 deletions
+5
View File
@@ -50,6 +50,11 @@ public class CameraSystem : MonoBehaviour
}
private void Start()
{
ResetToPlayerPosition();
}
public void ResetToPlayerPosition()
{
transform.position = Player.Instance.transform.position;
}
+2
View File
@@ -19,6 +19,8 @@ public class GameManager : MonoBehaviour
public TimeSystem Time => _timeSystem;
public UISystem UI => _uiSystem;
public CameraSystem Camera =>_cameraSystem;
public static GameManager Instance { get; private set; }
private void Awake()
+33 -1
View File
@@ -2,8 +2,40 @@ using UnityEngine;
public class SceneManager
{
public void Change(string sceneName)
private string _spawnLocationName= "DefaultStartPoint";
public SceneManager()
{
UnityEngine.SceneManagement.SceneManager.sceneLoaded += SceneManager_sceneLoaded;
}
public void Change(string sceneName,string spawnLocationName)
{
_spawnLocationName = spawnLocationName;
UnityEngine.SceneManagement.SceneManager.LoadScene(sceneName);
}
private void SceneManager_sceneLoaded(UnityEngine.SceneManagement.Scene arg0, UnityEngine.SceneManagement.LoadSceneMode arg1)
{
var spawnPoints = GameObject.FindGameObjectsWithTag("Respawn");
if (spawnPoints != null)
{
foreach (var spawn in spawnPoints)
{
if (spawn.name == _spawnLocationName)
{
var interactable = spawn.GetComponent<BaseInteractableObject>();
Player.Instance.SetPosition(interactable._interactionPoint.position);
}
}
}
else
{
Player.Instance.SetPosition(Vector3.zero);
}
GameManager.Instance.Camera.ResetToPlayerPosition();
}
}