공부/Unity

플레이어 추적 후 발사, 게임판 회전, UI 추가, 플레이어 사망 후 정지, PlayerPrefs

월러비 2025. 8. 18. 19:47
  • behaviour.enabled = false라면 Update 함수가 호출되지 않도록 하는 프로퍼티다.
  • 인스펙터의 회전값 : degree
  • Rotate() : degree만큼 회전하는 함수다.
    • 상태 회전을 먼저 확인하고 매개변수로 들어온 값을 추가하는 함수다.
    • 상대 : 200.f / 매개변수 : 10.f → 결과 : 210.f

플레이어 추적 후 발사

  • 방법은 2가지가 있다. - 어떤것을 사용해도 좋다.
    1. BulletSpawner가 타겟을 바라보며 회전한다.
    2. transform.LookAt(fireTarget.position);
    3. 스포너는 가만히 있고 Bullet이 생성될때 타겟을 바라보며 생성된다.
    4. var fire = Instantiate(bulletPrefab, firePoint.position, firePoint.rotation); fire.transform.LookAt(fireTarget.position);

게임판 회전

  • 현재 회전된 값에 더해서 점점 회전해야한다.
transform.Rotate(0f, speed * Time.deltaTime, 0f);

UI 추가

  • UI 프리펩을 최초로 추가할 때 Canvas 오브젝트와 EventSystem 오브젝트가 추가된다.
  • Canvas : Canvas 컴포넌트가 붙은 오브젝트를 의미한다.
    • UI가 여기에 그려진다.
    • 이것이 없다면 UI는 그려지지 않는다.
    • Rect Transform으로 크기가 설정된다.
  • Pivot : 오브젝트 사각형의 중심점
  • anchor : 부모 사각형을 기준으로 좌표를 이동하는 프리셋이다.
  • Pivot과 anchor를 이용하여 해상도가 바뀌어도 바뀐 해상도를 기준으로 바뀌기에 이것으로 조절하면 좋다.

플레이어 사망 후 정지

  • GameManager에 isGameOver 변수를 프로퍼티로 받아 확인한다.
public bool IsGameOver 
{ 
    get
    {
        return isGameOver;
    }
}

PlayerPrefs

  • 게임 세션 간 플레이어의 기본 설정을 저장하는 클래스다. - Unity Documentation에서 확인할 수 있다.
    • 암호화 없이 로컬 레지스트리에 PlayerPrefs를 저장된다.
    • 저장 경로 : 레지스트리 편집기 - HKEY_CURRENT_USER - SOFTWARE - Unity - UnityEditor - DefaultCompany - 프로젝트 이름
  • window 등의 운영체제 마다 저장되는 경로가 다르다.
    • 레지스트리 편집기에서 경로를 확인할 수 있다.
  • 키 벨류 쌍으로 동작한다.
  • PlayerPrefs.GetFloat(문자열, float) : 문자열의 이름으로 저장된 값을 확인하고 없다면 float 값으로 반환하고, 있다면 저장되어있는 값으로 반환하는 함수다.
  • PlayerPrefs.SetFloat(문자열, float) : 문자열의 이름으로 float 값을 저장하는 함수다
    float bestTime = PlayerPrefs.GetFloat("BestTime", 0f); //없으면 0으로 리턴하거나 2번? 인자가 있다면 2번? 인자 값으로 리턴
    if (score > bestTime)
    {
        PlayerPrefs.SetFloat("BestTime", score);
        bestTime = score;
    }
    
    bestScoreText.text = $"Best Record: {Mathf.FloorToInt(bestTime)}";
    .