👾 내일배움캠프/🃏 사전캠프
유니티 입문 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) 추가
- Transition의 condition(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);로 쓰는 것이 맞다! 기본 문법 헷갈리지 않기
더 찾아볼 부분: