본문 바로가기

Unity/Ruby's Adventure

Unity] 루비의 모험 2.캐릭터 컨트롤러와 키보드 입력

1) Unity Input System : Input Settings, input code(해당 프레임에서 축의 값을 쿼리할 수 있도록 Unity가 부여한 것).

 +) 쿼리: 웹 서버에 특정한 데이터를 보여달라는 웹 클라이언트의 요청(주로 문자열을 기반으로 한 요청)에 의한 처리. 데이터베이스로부터 특정한 주제어나 어귀 등 정보를 찾기 위해 사용된다. e.g. 네이버에 ‘파이썬 기초 강의’를 검색하면 서버에 저장되어 있던 데이터베이스에서 파이썬에 대한 정보가 나올 것이다. => 클라이언트(나)가 ‘파이썬 기초 강의’에 대한 데이터를 달라는 쿼리를 주었고, 서버가 이에 응답해 데이터베이스에서 데이터를 보여준 것이다.

2) 게임패드나 키보드 키 등 플레이어 입력제어를 -1에서 1까지 설정할 수 있다.

e.g. 키보드 키, 누르면 -1로 설정하는 음수키, 누르면 축을 1로 설정하는 양수키

3) 

4) GetAxis는 Start, Update와 같은 함수로, Unity 개발자들이 이미 정의한 함수이고 파라미터를 통해 도출될 축 이름을 받고 그 값을 리턴한다. 이때 매개변수를 “”에 넣어야 컴파일러가 변수 이름 또는 타입과 같은 특정 키워드가 아닌 단어로 인식한다.

 //앞서 본 Unity Input System을 임포트하여서 GetAxis함수를 통해 값을 가져오는 것으로 이해했다.

5) Debug:게임 디버그를 위한 모든 함수가 포함되어 있다.

Debug.Log(): 파라미터 하나를 콘솔에 표시한다. ≈print

//게임 실행 후 키보드를 누르면 출력되는 값이 변하는 것을 볼 수 있었다.

6) Input.GetAxis(”Horizontal”); 왼쪽 화살표 -1, 오른쪽 화살표 1, 누르지 않으면 0

이지만 기본적으로 Unity 내부적으로 축을 딸 부드럽게 움직이므로 즉시 값이 바뀌지는 않는다.

7) 콘솔창 Colllapse 버튼: 동일한 값을 가진 행은 하나의 행으로 축소되어 보여준다.

8)

9) “Vertical” 수직축은 위, 아래 화살표 키에 묶여있다.

10) 렌더링(이미지 합성): 컴퓨터 프로그램을 사용하여 모델 또는 이들을 모아놓은 장면인 씬 파일로부터 영상을 만들어 내는 과정.

    void Start()

    {

        QualitySettings.vSyncCount = 0;

        Application.targetFrameRate = 10;

 //초당 10프레임으로 렌더링함 > 초당 10프레임으로 Update함수 10번 호출 > 루비의 속도가 느려진다!    

//but, 내가 원하는 것은 렌더링 수를 줄이는 것!

    }

11) 이 문제를 해결하기 위해 루비의 이동을 프레임당 유닛이 아니라 초당 유닛으로 바꾼다.

//위의 10)은 기존에 루비의 이동이 프레임당 유닛이라서 초당 프레임 수를 줄이면 

//자동으로 루비의 움직임 횟수가 줄어든다.

12) Time.deltaTime : Unity가 한 프레임을 렌더링하는 데 걸리는 시간 변수.

13) 10)은 렌더링을 조절함으로써 루비의 이동 자연스러운 정도에 영향을 주고(게임 속도 제어)

11)은 루비의 이동 속도에 영향을 준다.

게임의 렌더링 프레임 수에 관계없이 동일한 속도로 이동한다. “프레임과 관계없이” 움직인다.

// 초당 60프레임이면 0.017초씩 60번 Update함수 호출되고, 초당 10프레임이면 0.1초씩 10번 Update함수가 호출된다. 즉, 최종적으로 루비가 이동한 속도는 같지만 루비가 게임 화면에 10번씩 렌더링되는 것과 60번씩 렌더링되는 것은 자연스러움(게임 속도)의 차이다. gif파일에서 사진의 수가 많을수록 더 자연스러운 움짤이 생성되는 것과 같은 이치이다.