2023/07/19 TIL

김도현·2023년 7월 19일
0

TIL

목록 보기
2/76
post-thumbnail

금일 한 것
[스파르타코딩클럽] 게임개발 종합반 - 2주차->풍선을 지켜라
[스파르타코딩클럽] 게임개발 종합반 - 3주차->고양이 밥주기 게임의 3목차(밥 쏘기)까지 제작

금일 배운 것

풍선을 지켜라

  1. 이미지를 활용하지 않고 오브젝트만 활용해 애니메이션 만드는 방법(시간에 따라 색 변화)
    Animations폴더 안에 애니메이션을 만들고 애니메이션을 적용할 오브젝트를 드래그
    이후 더블 클릭을 하여

    에서 녹화버튼을 누르고 원하는 시간대에 변화를 주면 끝

  2. 마우스의 움직임에 따라 오브젝트 위치 변화

void Update()
{
    Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
    transform.position = new Vector3(mousePos.x, mousePos.y, 0);
}

카메라 메인 씬의 마우스 포인트 값을 vector3형식의 mousePos에 받아 포지션 변화!

3.데이터 보관하는 방법
(1) 데이터 저장하기

PlayerPrefs.SetFloat("bestScore", 어떤숫자값);
PlayerPrefs.SetString("bestScore", 어떤문자열);

(2)데이터 불러오기

어떤숫자값 = PlayerPrefs.getFloat("bestScore");
어떤문자열 = PlayerPrefs.getString("bestScore");

(3)데이터 있는지 확인하기

PlayerPrefs.HasKey("bestScore") //bool값

(4)데이터 모두 지우기

PlayerPrefs.DeleteAll();

4.애니메이션 만들어 놓은 오브젝트에 애니메이션 적용
애니메이션을 만들고 적용할 오브젝트에 드래그(*balloon_die를 GameObject인 balloon에 드래그) 후 변화를 기록하여 애니메이션 적용 ->
애니메이션 컨트롤러를 이용해 애니메이션 끼리 연결(마우스 오른쪽 클릭후 make transition으로 연결) ->
파라미터(Parameters)에 원하는 형식의 만들어 어떤 조건을 충족시 수행하도록 설정

예시
transition을 클릭하고 아래와 같이 세팅하기
→ has exit time 을 체크 해제해야 : 즉시 전환됩니다!

예시에서는 풍선오브젝트가 네모상자에 충돌시 "isDie"가 True로 전환
isDie의 값을 변경하기 위해서는 gameManager에서 "public Animator 이름;" 형태로 선언하여 인식시켜줘야됨
(추가 문제 여기서는 충돌 = 게임오버이기에 충돌시 Time.timeScale값을 0으로 하였기에 애니메이션 실행이 안된다 이를 해결하기 위해서는

public void gameOver()
{
    anim.SetBool("isDie", true); // 충돌 애니메이션 실행

    isRunning = false;
    Invoke("timeStop", 0.5f); // <- 0.5초 이후에 timeStio함수를 호출하여 정지시킴
    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);
        }
    }
    bestScoreTxt.text = PlayerPrefs.GetFloat("bestScore").ToString("N2");
}

void timeStop() //실질적 정지
{
	Time.timeScale = 0.0f;
}

으로 제작 해야 된다.)

고양이 밥주기

1.scene을 추가하여 StartScene, MainScene등등 여러개로 분리할 수 있음
(1)Camera에서 szie를 변경해 더 큰 화면에서 제작 가능
(2)Instantiate(food, new Vector3(x,y,0), Quaternion.identity);와 같은 형태로 제작 가능 (오브젝트 이름, 벡터 방향 , 회전 방향) Quaternion.identity는 회전 방향이 없다는 뜻!

느낀점
오브젝트를 생성이후 제거를 안해주면 게임이 느려지기에 꼭 삭제 해줘야됨(메모리 과부하)
이미지를 활용하면 게임 퀄리티가 많이 달라보임 Photoshop을 활용해야 될 것 같다...

0개의 댓글