본문 바로가기

Programming/유니티

유니티 (Unity) Rigidbody2d velocity 활용법

Rigidbody2d

Rigidbody2d를 이용해 물리효과를 연출할 수 있습니다. 대표적으로 2d 게임에서는 점프 연출이나 발사체 연출에 사용이 가능합니다. Rigidbody2d는 addforce와 velocity를 이용하여 구현할 수 있는데, 오늘은 velocity를 이용하여 원하는 만큼만 오브젝트를 이동시키는 로직을 만들어보겠습니다.

----

----

velocity

velocity를 이용할 때 속도의 방향과 크기요소를 넣어주면 되므로 속도 벡터를 계산하여 할당합니다.

 

수직이동

다음과 같이 수직으로 속도를 계산하면 원하는 높이까지 오브젝트가 올라갔다가 떨어집니다.
var gravi = Physics.gravity.magnitude; //프로젝트 셋팅의 physics에 셋팅된 값을 가져옵니다.
var height = 1 //점프하려는 높이 (월드좌표기준의 거리입니다)
var verticalSpeed = Mathf.Sqrt(2 * gravi * height); //위로 올라가는 속도입니다.

rigid.velocity = new Vector2(0, verticalSpeed);

 

수평이동

수평이동을 계산할 때는 v = s / t 공식을 적용하여

var totalTime = 2 * verticalSpeed / gravi;
var width = 1 //우로 이동하는 거리 (월드좌표기준의 거리입니다)
var horizonSpeed = width / totalTime; 

rigid.velocity = new Vector2(horizonSpeed, 0);
우측으로 이동하게 됩니다.

 

조합

이제 수직과 수평요소를 함께 넣어주면 우측으로 점프하는 연출을 만들 수 있습니다.
rigid.velocity = new Vector2(horizonSpeed, verticalSpeed);

 

현재 아래의 프로젝트에서 점프 게임을 만들고 있으니 관심 있으신 분들은 도움이 되길 바랍니다.

 

유니티(Unity) 프로젝트 점프게임 만들기 : [1] 시작

목표 아주 단순한 점프게임을 만들어서 광고를 붙이고 광고수익을 발생 시켜보는 것이 이 프로젝트의 목표입니다. 서버도 없고 단지 클라이언트로 로그라이크형의 게임을 만들것이기 때문에

moblieandlife.tistory.com