
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
코드스니펫 활용하여 전부 에러없이 작성한거 같은데 , 게임 플레이하면 게임매니저가 플레이어를 인식 못하고 고정되어 있습니다. 생성된 클론을 player transform에 드래그앤드랍 하면 되긴 하지만 자동으로 안되서 뭐가 문제인지 모르겠습니다. 어디서부터 잘못된건지 못찾겠어요.....;;;

작성한 코드 및 에러 메세지
오류 발생 시, 작성한 코드 전체와 에러 메시지를 첨부해 주세요.
using UnityEngine;
using System.Collections;
using TMPro;
using System.Runtime.CompilerServices;
public class GameManager : MonoBehaviour
{
public static GameManager Instance;
public bool IsGameEnd;
public Vector3 currentSavePoint;
public Transform playerTransform;
[SerializeField] private TextMeshProUGUI timeTxt;
[SerializeField] private TextMeshProUGUI bestScoreTxt;
[SerializeField] private GameObject[] CharacterPrefabs;
private PlayerAnimatorController animatorController;
private float elaspedTime = 0f;
private float bestScore = 0f;
void Start()
{
Instance = this;
animatorController = Instantiate(CharacterPrefabs[PlayerPrefs.GetInt("SelectedCharacter", 0)], currentSavePoint, Quaternion.identity).GetComponent<PlayerAnimatorController>();
IsGameEnd = false;
timeTxt.text = $"{elaspedTime:0.00}";
bestScore = PlayerPrefs.GetFloat("BestScore", 99.99f);
bestScoreTxt.text = $"BEST : {bestScore:0.00}";
}
void Update()
{
if (IsGameEnd) return;
elaspedTime += Time.deltaTime;
timeTxt.text = $"{elaspedTime:0.00}";
}
public void EndGame(bool isWin)
{
StartCoroutine(StopGameGradually());
IsGameEnd = true;
if (isWin)
{
if (elaspedTime < bestScore) PlayerPrefs.SetFloat("BestScore", elaspedTime);
}
}
IEnumerator StopGameGradually()
{
float time = 0f;
while (time < .5f)
{
time += Time.deltaTime;
Time.timeScale = Mathf.Lerp(1f, 0f, time * 2f);
yield return null;
}
}
}
Tip 2) Ctrl+A(맥의 경우 Command+A) 단축키로 코드를 한 번에 선택할 수 있어요!
using UnityEngine;
public class PlayerCameraController : MonoBehaviour
{
[SerializeField] private Vector3 cameraOffset;
private Camera cam;
void Start()
{
cam = Camera.main;
}
void LateUpdate()
{
if (GameManager.Instance.playerTransform == null) return;
HandleCamera();
}
private void HandleCamera()
{
Quaternion playerRotation = GameManager.Instance.playerTransform.rotation;
Vector3 rotatedOffset = playerRotation * cameraOffset;
cam.transform.position = GameManager.Instance.playerTransform.position + rotatedOffset;
cam.transform.LookAt(GameManager.Instance.playerTransform);
}
}
