이미지 없이 Animation 만드는 방법
위 그림과 같이 balloon_idle 에니메이션 창을 띄우고 이후에 balloon의 시간 별 색상을 바꿔 줌으로서 만들 수 있다.
마우스 포인터를 따라 움직이게 하기
코드이용
void Update()
{
Vector3 mousePos = Camera.main. ScreenToWorldPoint ( Input.mousePosition );
transform.position = new Vector3 (mousePos.x, mousePos.y, 0);
}
shadow 효과주기
Add Component로 추가
판넬위 여러 Text 입력 하기
Target Graphic
Target Graphic 아래를 보면 경고문 하나가 있다.
이는 Target Graphic 을 설정을 한다면 사용자들이 마우스를 버튼 가까이 가져 갔을 때 색변화를 주는것
싱글톤(Singleton) 패턴 (10.17)
리마인드 - 싱글톤이란? 너는 딱 하나야! 라고 할 수 있게 세팅해두는 것 (그래야 다른데서 나를 부를 수 있다!!!)
코드 사용
public static gameManager I; // public이란 여러군데서 나를 부를수 있다. gameManager I 가 있다!
void Awake() // void Awake() 가 불리면 I = this; 즉 gameManager스스로를 넣어라!
{
I = this;
}
// 싱글톤이 아니라면 I = this; 가 아닌 I = new gameManager; 가 됨
게임 종료 함수 만들기
게임 종료 목표와 충돌시 종료하기
코드 사용
void OnCollisionEnter2D(Collision2D coll)
// OnCollisionEnter2D란 Collider가 걸려있는 오브젝트 끼리 충돌할때 불리는 함수
{
if (coll.gameObject.tag == "balloon") // 만약 상대가 balloon과 ==(같다)면!
{
gameManager.I.gameOver(); // gameManager.I 에게 말해서 종료 시켜라!
}
}
Update() 함수를 멈추게 하기
위와 같이 실험도중 타이머와 이번판 점수에 약간의 오차가 존재
이는 Update()와 gameOver() 간의 약간의 시간차가 있기 때문이다.
코드 사용
bool isRunning = true;
void Update()
{
if (isRunning) // isRunning이 true 즉 아직 진행중이라면 아래를 실행
{
alive += Time.deltaTime;
timeTxt.text = alive.ToString("N2");
}
}
public void gameOver()
{
isRunning = false; // isRunning이 false 라면 더이상 update 종료 및 판넬 오픈
Time.timeScale = 0.0f;
thisScoreTxt.text = alive.ToString("N2");
endPanel.SetActive(true);
}
다시하기 만들기
코드 사용
using UnityEngine.SceneManagement; // SceneManagement를 사용한다.
public void retry()
{
SceneManager.LoadScene("MainScene"); // MainScene을 리로드한다.
}
이렇게 다시 할 때에는 반드시 "시간"도 되돌려놔야 한다!!
Time.timeScale = 1.0f;을 Start에 넣어준다.
이후 retry (on click)에 추가
데이터를 보관하는 방법
PlayerPrefs : 앱을 껐다 켜도 데이터가 유지되게 - 유니티에서 데이터를 보관하는 방법
1. 데이터 저장하기
PlayerPrefs.SetFloat("bestScore", 어떤숫자값);
PlayerPrefs.SetString("bestScore", 어떤문자열);
2. 데이터 불러오기
어떤숫자값 = PlayerPrefs.getFloat("bestScore");
어떤문자열 = PlayerPrefs.getString("bestScore");
3. 데이터를 저장했었는지 확인 → 있으면 true 없으면 false
PlayerPrefs.HasKey("bestScore")
4. 데이터를 모두 지우기
PlayerPrefs.DeleteAll();
최고 점수 보여주기
로직 생각하기
if (최고 점수가 없으면)
{
최고점수 = 지금점수
}
else
{
if (최고점수 < 지금점수)
{
최고점수 = 지금점수
}
}
애니메이션 동작 정하기
animator controller를 열어서 작업
이후 좌측 상단에 Parameters에, bool 형식의 isDie (대, 소문자 구분 하여) 를 만들기
그런다음 새로만든 진행로를 클릭하면
이런 창이뜬다. 여기서
Has Exit Time 은 이 balloon_idle 에서 -die로 넘어갈때 딜레이가 있는가?
Conditions은 언제 넘어 가야하나요?
이후 gmaeManager에서 작업
하지만 작동이 안된다.
이유는 애니메이션이 나올 틈이 없이 시간을 멈추기 때문
0.5초 후에 시간을 멈추도록 Invoke 로 처리하기!
화면 밖 오브젝트 제거!
화면 밖으로 떨어진 네모들을 Destroy(gameObject) 해주기!
square.cs에 작성
'Unity 공부' 카테고리의 다른 글
03.18 (TIL-Unity) (0) | 2024.03.19 |
---|---|
10.23 (Unity 공부) (0) | 2023.10.23 |
10.17 (Unity공부) (0) | 2023.10.17 |
10.13 (Unity공부) (0) | 2023.10.13 |