개발일지/스파르타 코딩클럽 유니티 강의

2일차 기본 씬 구성 및 애니메이션 맛보기 ~

치치베베 2024. 3. 20. 15:39

스파르타 코딩클럽에서 국비 지원으로

유니티로 게임만들기 왕초보반 강의를 시작하였다.

 

2일차 기본 씬 구성 및 애니메이션 맛보기

 

5주간의 강의 코스인데 하루에 얼마나 수강하는지는 본인 마음이다.

 

0주차 강의에서 개발일지 작성을 추천하기에 나도 써보기로 해보았다.

 

오늘 배운 내용

  • 유니티 설치, 설정
  •  메인 씬에 게임 오브젝트 추가하기
  •  게임 오브젝트 크기, 위치, 색깔 조정법
  •  유니티에 이미지 에셋 추가 및 게임 오브젝트에 적용
  •  애니메이션 간단 제작, 게임 오브젝트에 적용
  •  VS코드 설치, 설정
  • 캐릭터에 코딩을 적용하는 법 ( start - 너는 태어날 때, update - 매 순간(프레임) 이렇게 해라 ))
  • Script 만들기
  • 캐릭터 좌우 움직임 코딩하기
  • 캐릭터가 벽에 닿으면 다른 방향 보게하기
  • 마우스 클릭 시 캐릭터 방향 바꾸기

새롭게 알게 된 내용

 약 반년간 유니티 독학을 했었기 때문에 모두 알고있었던 사실이었지만 복습하는 기분이어서 좋았다.

그런데 내가 지금까지 공부를 했을 때는 2 by 3 레이아웃으로 개발을 진행했던 적이 없는데

모바일 게임 제작이라서 그런건지 처음으로 이 레이아웃을 사용해 보았다.

 

 

오늘 발생한 문제

 캐릭터가 영상과 똑같이 했음에도 불구하고 너무 빠르게 움직였다. 그러나 이건 버그나 문제가 아닌

컴퓨터 속도에 따른 차이라고 했다. 프레임의 차이라고 예상하긴 했는데 해결방법을 알 수 없었다.

첫 번째 해결 방법

게임 뷰 크기 설정에서 VSync 체크하기

 VSync를 킴으로써 Update의 프레임을 사용자의 모니터에 맞게 바꾸는 원리이다

 주의 사항으로는 이 방법은 유니티 에디터 내에서만 바뀌고, 실제 게임으로 제작했을 때는

바뀌지 않는다.

나에게는 이 방법이 맞지 않았다 아무래도 모니터가 144fps라서 그대로 빠른 상태였던 것 같다.

모니터 주사율이 60fps인 분들은 이 방법이 통할 것으로 예상된다.

 

두 번째 해결방법

float direction = 0.05f;

// Start is called before the first frame update
void Start()
{
    
}

// Update is called once per frame
void Update()
{
    // 이후 코드들은 다시 Update로!
}

void FixedUpdate()
{
    transform.position += new Vector3(direction, 0, 0);        
}

 

유니티에는 Update와 달리 프레임과 상관없이 게임 내에서 흘러가는 시간에 따라서

호출될 수 있는 FixedUpdate 라는 함수가 있다.

다만 위 코드처럼 FixedUpdate를 적용 시에 저 함수 외에 다른 함수들은

Update에 넣어주어야 한다. ( 이번 강의에서는 그런듯 )

 

나는 두 번째 방법으로 해결되었다.

 

중요하게 생각하는 부분

 if (Input.GetMouseButtonDown(0))
    {
        toward *= -1;
        direction *= -1;
    }

마우스 왼쪽 버튼으로 화면을 클릭 시에 toward와 direction에 -1을 곱하는 코드인데

position이 만약 0.05라면 -0.05로 만들고 -0.05라면 0.05로 만들어서 움직이는 방향을 바꾼다.

localscale이 0.1이라면 -0.1로 만들고 -0.1이라면 0.1로 만들어서 캐릭터가 보는 방향을 바꾼다.

말 그대로 수학을 통해서 움직임을 조정하는 것.

복잡해지면 헷갈릴 수 있다고 생각하여 중요하다고 생각하는 부분이다.

 

 

#유니티 프레임 조절

#유니티 개발일지