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);
현재 아래의 프로젝트에서 점프 게임을 만들고 있으니 관심 있으신 분들은 도움이 되길 바랍니다.
'Programming > 유니티' 카테고리의 다른 글
유니티 (Unity) Animator로 2d Animation 재생(Play) (0) | 2024.02.24 |
---|---|
유니티 (Unity) - Button의 OnClick Listener 사용법 (0) | 2024.02.23 |
유니티(Unity) 프로젝트 점프게임 만들기 : [7] 플렛폼 생성 (0) | 2024.02.18 |
유니티 (Unity Basic) 이미지 적용 (Image Drag and Drop) (0) | 2024.02.16 |
유니티 (Unity Basic) 프리팹 만들기 (Create Prefab) (0) | 2024.02.16 |