본문 바로가기

Unity

[Unity] Rigidbody2D와 Transform을 이용한 플레이어 이동 구현

728x90

플레이어 이동 방법을 2가지 소개하겠습니다.

 

1. Rigidbody2D 컴포넌트를 사용하는 방법

2. Transform 컴포넌트를 사용하는 방법

 

Rigidbody 2D 컴포넌트는 오브젝트를 물리 엔진이 제어하게 만듭니다.

Transform 은 게임 오브젝트의 포지션, 회전, 스케일, 부모-자식 상태를 저장하기 위해 사용한다.

 

변수 선언 내용

1의 방법을 위해서는 maxSpeed와 rigid 변수가 필요하다.

2의 방법을 위해서는 speed와 tf 변수가 필요하다.

 

1. Rigidbody 2D 컴포넌트를 사용하는 방법

move1의 함수 전체 코드

float h를 통해서 플레이어가 어디로 가고 싶은지에 대한 방향 정보를 가져온다.

가져온 정보를 이용하여 플레이어를 그쪽 방향으로 밀어준다.

 

최대 속력을 정해주지 않으면 생기는 문제

하지만 여기서 AddForce는 힘을 계속해서 플레이어에게 가해주기 때문에 속도가 무한대로 늘어날 수 있다.

따라서 public int maxSpeed의 값을 이용하여 플레이어의 속도에 제한을 주는 것으로 문제를 해결한다.

 

2. Transform 컴포넌트를 사용하는 방법

move2의 함수 전체 코드

float h를 통해서 플레이어가 어디로 가고 싶은지에 대한 방향 정보를 가져온다.

방향 정보에 speed를 곱하여 속도를 높여주고, Time.deltaTime을 곱하여 어떠한 프레임에서도 같은 속도로 갈 수 있게 정해준다.

 

그리고 현재 위치에서 다음 위치로 이동시켜준다.

 

정상적으로 이동하는 플레이어

 

728x90