👾 내일배움캠프/🃏 사전캠프

유니티 입문 2일차 - 풍선을 구해라!

리리핸 2023. 7. 31. 18:47

[새롭게 배우는 것]

  • 마우스로 제어하기
  • 베스트스코어 기록
  • 애니메이션 전환

 

 [공부 내용]

 

1. 풍선 & 마우스 만들기

  • 애니메이션 더하기
  • 마우스에 움직임 더하기
    • 마우스 위치 따기: Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
    • 코드를 외울 필요는 없지만 기능에 익숙해지기

 

2. 네모(장애물) 설정

  • 게임 내에서 계속해서 생성되는 장애물은 GameManager에서 제어
  • 함수 복습
    • InvokeRepeating("함수명")
    • Instantiate(오브젝트)

 

3. 시간 관리 및 끝내기

  • 흐르는 시간: 게임 전체의 시간이므로 GameManager에 추가
    • Update함수에서 Time.deltaTime 활용
  • 이미지에 섀도우 컴포넌트 추가
  • UI 컴포넌트의 버튼화
    • Target Graphic
  • GameManager
    • 싱글톤 설정
    • 다른 스크립트가 호출해야 하는 함수는 public으로 선언
    • gameOver 함수 딜레이 문제 해결 – isRunning Boolean 값

 

 

4. 최고점수 (데이터 저장하기)

  • PlayerPrefs: 앱을 껐다 켜도 데이터가 유지되게 (유니티에서 보관)
  • 데이터 (key, value) 페어로 저장
  •  저장
    • PlayerPrefs.SetFloat("keyName", 어떤숫자열);
    • PayerPrefs.SetString("keyName", 어떤문자열);
  • 불러오기
    • 어떤숫자값 = PlayerPrefs.getFloat("keyName");
    • 어떤문자열 = PlayerPrefs.getString("keyName");
  • 데이터 존재 유무 확인
    • PlayerPrefs.HasKey("keyName")
    • 결과는 ture 또는 false
  • 모든 데이터 삭제
    • PlayerPrefs.DeleteAll();

 

5. 애니메이션 전환

  • 두 가지 이상의 애니메이션 필요 (예제에서는 idle, die)
  • 오브젝트에 대한 애니메이션 생성
  • 애니메이션 컨트롤러에서 연결 및 조건 달아주기
    • 연결: Make Transition
    • 조건: 애니메이션창 --> Parameter --> boolean(isDie) 추가
    •  Transitioncondition(isDie)추가. 이 때 has exit time (애니메이션 변화에 딜레이) 체크 해제
  • 애니메이션 컨트롤러에게 isDie = true 알려주기
    • public Animator anim; (Animator 선택)
    • gameOver 함수에 anim.SetBool("isDie", true);
    • 이 때, Time.timeScale = 0;에 의해 애니메이션 효과를 보여줄 시간이 부족
    • Invoke 함수를 써서 timescale 변화 시간을 늦춰줌
    • Update 함수에 있는 alive 시간은 이미 isRunning에 의해 업데이트가 멈춤!

 

6. 숙제

  • InvokeRepeating + Instantiate로 만들어진 square들은 사라지지 않음!
  • Destroy(gameObject)로 없애기

 

[기록]

 

복습 위주로 진행했지만, 이번 시간에 배운 내용들이 게임의 조작감에 많은 영향을 준다고 느꼈다.

숙제 헷갈려서.. Destroy(this);로 써버렸는데 Destroy(this.gameObject); , Destroy(gameObject);로 쓰는 것이 맞다! 기본 문법 헷갈리지 않기

 

더 찾아볼 부분: