STIKA
내일배움캠프 Unity 4일차 TIL - 2주차 본문
23.12.27 Wed
❤️ TIL
Today I Learned
❤️하루에 1%씩만 나아가도 4개월 동안 쌓이면 꽤 덩치가 커진답니다 :)
📌 오늘의 계획
- 2주차 강의 끝내기
✏️ 작업 내용
종료조건
public GameObject endPanel;
public void gameOver()
{
Time.timeScale = 0.0f;
endPanel.SetActive(true);
}
Object끼리 충돌 시 사용할 함수
void OnCollisionEnter2D(Collision2D coll)
{
if (coll.gameObject.tag == "balloon")
{
gameManager.I.gameOver();
}
}
Update 멈추기
Update()와 gameOver() 간의 약간의 시간차가 있기 때문
bool isRunning = true;
void Update()
{
if (isRunning)
{
alive += Time.deltaTime;
timeTxt.text = alive.ToString("N2");
}
}
public void gameOver()
{
isRunning = false;
Time.timeScale = 0.0f;
thisScoreTxt.text = alive.ToString("N2");
endPanel.SetActive(true);
}
retry 만들기
Scene을 다시 시작하면 됨
using UnityEngine.SceneManagement;
public void retry()
{
SceneManager.LoadScene("MainScene");
}
TimeScale
TimeScale이 0일때는 시간이 멈춤 1로 만들어서 다시 흐르게 하기
void Start()
{
Time.timeScale = 1.0f;
InvokeRepeating("makeSquare", 0.0f, 0.5f);
}
PlayerPrefs
유니티에서 데이터 보관하기
저장할때 태그 달아야함
PlayerPrefs.SetFloat("bestScore", 어떤숫자값);
PlayerPrefs.SetString("bestScore", 어떤문자열);
불러오기
어떤숫자값 = PlayerPrefs.getFloat("bestScore");
어떤문자열 = PlayerPrefs.getString("bestScore");
PlayerPrefs.HasKey("bestScore")
PlayerPrefs.DeleteAll();
public void gameOver()
{
isRunning = false;
Time.timeScale = 0.0f;
thisScoreTxt.text = alive.ToString("N2");
endPanel.SetActive(true);
if (PlayerPrefs.HasKey("bestScore") == false)
{
PlayerPrefs.SetFloat("bestScore", alive);
}
else
{
if (PlayerPrefs.GetFloat("bestScore") < alive)
{
PlayerPrefs.SetFloat("bestScore", alive);
}
}
}
점수 띄우기
public Text bestScoreTxt;
bestScoreTxt.text = PlayerPrefs.GetFloat("bestScore").ToString("N2");
애니메이션
idle 애니메이션 만들기
터지는 애니메이션 만들기
충돌 시에 애니메이션 전환
balloon에 끌어다 놓고 add New Clip 해주기
balloon animator 들어가기
idle → die로 transition만들기
마우스 오른쪽 클릭 make transition하면 됨
Animator
GameManager.cs 에서 animator 받기
balloon 연결하기
public Animator anim;
public void gameOver()
{
anim.SetBool("isDie", true);
}
Invoke
확인할 때 안되는데 애니메이션이 나올 틈이 없이 시간이 멈추기 때문
0.5초 후에 시간을 멈추도록 Invoke 로 처리
Invoke("timeStop", 0.5f);
Destroy
화면 밖으로 나간 Object들 없애기
transform.position.y로 y좌표 구하기
void Update()
{
if (transform.position.y < -6.0f)
{
Destroy(gameObject);
}
}
📝 오늘의 마무리
2주차 강의는 1주차의 복습이여서 하루만에 전부 들을 수 있었다.
1주차때 써봤던 함수를 한번 더 쓰는 식으로 복습했는데
확실히 어제보다 이해가 잘간다.
오늘은 따로 함수를 적어두기로 했다.
✏️ 스스로 어제보다 한 발 더 나아갔다는 것을 자각하기
✏️ TIL을 쓰기 위해서라도, 오늘 반드시 단 하나라도 배우기
✏️ 꾸준히 기록을 남기는 습관 가지기
📕 오늘의 학습 키워드
📕 공부한 내용 본인의 언어로 정리하기
📕 오늘의 회고
📕 12시간 중 얼마나 몰입했는지
📕 더 나은 미래를 위해 내일 어떤 공부를 진행할 것인지
'프로그래밍 > Unity + C#' 카테고리의 다른 글
내일배움캠프 Unity 6일차 TIL - C# 문법 시작 (0) | 2023.12.29 |
---|---|
내일배움캠프 Unity 5일차 TIL - 3주차 (0) | 2023.12.28 |
내일배움캠프 Unity 3일차 TIL - 1, 2주차 함수 (0) | 2023.12.26 |
내일배움캠프 Unity 2일차 TIL - 1주차 (0) | 2023.12.22 |
내일배움캠프 Unity 1일차 TIL - Unity 3기를 시작하는 마음 (0) | 2023.12.21 |