01 프로젝트 생성
유니티 허브에서 위와 같이 2D 템플릿의 프로젝트를 하나 생성해주었다.
2D로 생성하였기 때문에 현재 Hierarchy View에는 카메라만 존재하고 위치는 (X: 0, Y: 0, Z: -10), Clear Flags는 Solid Color, 배경색은 푸른색인 것을 확인할 수 있다. Projection은 Orthographic으로 설정되어 있다.
카메라의 위치가 (0, 0, -10)인 이유는 원점에 있는 오브젝트를 바라볼 수 있도록 설정이 되어있기 때문이다.
02 플레이어 오브젝트 생성
화면 상에서 돌아다니게 하고 싶은 이미지를 하나 넣고 Hierarchy View에서 2D Objects 중 Sprites를 삽입한다. 이때, 나는 넣고자 하는 이미지가 원형이기 때문에 Circle을 넣어주었다.
삽입한 오브젝트의 Renderer 부분에 보여지고 싶은 이미지를 넣으면 위와 같이 원형 오브젝트에 맞춰서 이미지가 들어간 것을 볼 수 있었다.
게임 오브젝트의 위치를 제어하는 컴포넌트는 Transform이다. 따라서 Transform 컴포넌트에 있는 Position 정보를 변경하면 게임 오브젝트의 위치가 변경되는 것을 확인할 수 있다.
▶ 실제 게임을 진행할 때는 유니티 에디터나 Inspector View에 있는 정보를 볼 수 없기 때문에 스크립트 코드를 이용해서 Transform 컴포넌트의 위치 정보를 수정할 수 있다.
Movement2D라는 이름의 스크립트를 하나 생성하여 Player 오브젝트의 컴포넌트로 적용시킬 수 있다
03 transform.position
Movement2D 스크립트의 코드를 작성해보자.
▶ transform : 내가 소속되어 있는 게임 오브젝트의 Transform 컴포넌트
→ 대입 연산자 기준 왼쪽에 있는 transform.position은 값을 설정하는 것이고, 오른쪽에 있는 transform.position은 값을 사용하는 것
→ 위 코드에서는 오른쪽 방향 (1, 0, 0)으로 1의 속도만큼 이동하고 있음
스크립트 코드를 실행하니 X가 1만큼 이동한 것을 확인할 수 있었다.
04 Update()와 Time.deltaTime
게임이 실행되는 동안 계속 움직이도록 하려면 앞서 학습한 Update() 함수를 활용할 수 있다.
업데이트 함수에서 이동, 회전, 크기 변화를 지속해서 증감시키는 행위를 할 경우 Time.deltaTime을 곱해야 한다. 그 이유는 바로 업데이트 함수가 FPS 수치에 따라 1초에 몇번 반복될지를 결정하기 때문이다.
📌 Time.deltaTime
- 이전 Update() 종료부터 다음 Update() 시작까지의 시간
- 즉, 업데이트 사이의 시간
→ Ex) 1분에 Update()가 60번 호출된다면 Time.deltaTime은 1
- 사양이 좋지 않은 컴퓨터는 60초에 Update()가 60번 호출 ▶ Time.deltaTime의 값은 1
- 사양이 좋은 컴퓨터는 60초에 Update()가 120번 호출 ▶ Time.deltaTime의 값은 0.5
▶ 이동량 = 방향 * 속도 * Time.deltaTime
코드 실행 결과, 오브젝트가 1초에 1만큼 이동하는 것을 볼 수 있다.
05 Input.GetAxisRaw()
방향키로 오브젝트를 제어하기 위해 다음과 같이 코드를 작성해주었다.
📌 Input Class
: 입력에 관련된 모든 프로퍼티, 메소드 제공
▶ PC (키보드, 마우스, 모바일 터치, 가속도센서, 자이로센서) 등의 입력 메소드, 마우스 좌표와 같은 각종 프로퍼티 정보를 제공
📌 Input.GetAxis(), Input.GetAxisRaw() 메소드
: Edit - Project Settings - Input 메뉴에 등록된 단축키를 입력에 이용할 때 사용
코드 실행 결과 아래 영상과 같이 방향키로 게임 오브젝트가 이동하는 모습을 볼 수 있다.
출처 : 따라하면서 배우는 고박사의 유니티 기초(https://inf.run/sgcy)
'Study > Unity' 카테고리의 다른 글
[Unity 2D Basic] 게임 오브젝트 생성 함수 (0) | 2024.04.16 |
---|---|
[Unity 2D Basic] 게임 오브젝트 물리와 충돌 (0) | 2024.04.10 |
[Unity Introduction] 유니티 이벤트 함수 (0) | 2024.04.09 |
[Unity Introduction] 스크립트 개요, 콘솔 뷰에 데이터 출력 (0) | 2024.04.03 |
[Unity Introduction] 게임 오브젝트, 컴포넌트 (0) | 2024.04.03 |