우리가 흔히 물체를 끌어당기는 힘을 중력이라고 하죠 그럼 Unity을 통해 만든 게임들은 무엇으로 중력을 잡아주는 게임들이 존재할까요? 오늘은 이러한 중력의 영향을 받는 기능을 잡아주는 물리엔진인 Rigidbody에 대해 설명과 Unity에서 어떻게 구현하는지 사용해 보는 시간을 가져보도록 하겠습니다.
물리엔진, RigidBody란?
물리엔진은 일상생활에서 접할수 있는 힘, 중력, 마찰력등의 물리 현상을 컴퓨터에서 시뮬레이션을 한 것을 말합니다. 현실과 같은 상호작용을 하고 물체를 표현하기 위해 개발되며, 물리엔진이 보편화되면서 게임이 현실적인 효과를 추가가 가능해졌습니다. 현재는 영화, CG 등 다양한 영상물, 그래픽 작업등에도 폭넓게 사용하고 있습니다.
RigidBody(강체:리지드바디)는 천체 물리학 등 물리학에서 사용되는 개념으로 물리학에서는 형태가 고정되어 변하지 않는 물체를 가리키며 바깥 힘이 가해져도 모양이나 크기가 변형되지 않습니다.(물체의 운동을 분석할 때 보통 물체를 강체로 가정합니다.)
Unity에서 RigidBody는 Game Object가 물리 제어로 동작하게 하며 현실적인 충돌 현상 등의 물리현상을 구현할 수 있게 해 줍니다.(GameObject에 물체를 추가하여, Inspector에서 추가하여 조작합니다.)
RigidBody3 D와 RigidBody2d의 차이점에 대해서 간단하게 말하자면
RigidBody2D | RigidBody3D |
기능적인 부분은 동일함 | |
RigidBody2d에는 평면에서만 작동함(차원이란 개념이 없음)
|
RigidBody는 3D에서 작동함
|
자세하게 Rigidbody를 알고 싶으시면 아래링크에 들어가시면 됩니다.
https://docs.unity3d.com/kr/2020.3/Manual/class-Rigidbody.html
리지드바디 - Unity 매뉴얼
Rigidbody 는 GameObject 가 물리 제어로 동작하게 합니다. 리지드바디는 힘과 토크를 받아 오브젝트가 사실적으로 움직이도록 해줍니다. 리지드바디가 포함된 모든 게임 오브젝트는 중력의 영향을
docs.unity3d.com
RigidBody 속성을 살펴보자면 위의 Mass는 Object의 질량을 나타내고 무게 단위가 아닌 상대적 의미의 질량을 나타냅니다.
Drag는 이동할 때 적용되는 마찰계수입니다.
Angular Drag 회전할 때 적용되는 마찰계수입니다.
Use Gravity는 중력 적용 여부를 결정할 수 있습니다.
IS Kinematic는 중력과 외부에서 가해지는 물리적 힘에 반응을 결정할 수 있습니다.
Collision Detection은 세밀한 충돌을 검출하기 위한 옵션으로 너무 빠른 물체는 물리엔진 충돌 검출을 놓칠 수 있습니다.

RigidBody를 사용해 보기
Unity 내에서 RIgidbody를 이용해서 마우스를 우클릭하여 Object를 날리게 해 보겠습니다.
프로젝트 내에 발사할 Object를 생성해 줍니다.
Prefab에서 위의 사진처럼 Collider와 Rigidbody를 설정해 줍니다.
(Collider은 나중에 설명해 드리겠습니다.)
이제 투척물을 발사할 수 있는 즉, 어디서 나가는지 확인할 수 있는 용도인 Object를 생성해 줍니다.
이러한 생성된 객체 안에 Script를 생성 및 추가합니다.
[SerializeField]
private GameObject gameobject;
[SerializeField]
private Transform projectileSpawnPoint;
[SerializeField]
private float projectileSpeed = 10f;
void Update()
{
if (Input.GetMouseButtonDown(0))
{
GameObject projectile = Instantiate(gameobject, projectileSpawnPoint.position, Quaternion.identity);
Rigidbody projectileRb = projectile.GetComponent<Rigidbody>();
projectileRb.velocity = transform.right * projectileSpeed;
}
}
좌표 설정 시 사용하는 코드는 아래의 표와 같습니다.
X좌표 설정시 | transform.right |
Y좌표 설정시 |
transform.up
|
Z좌표 설정시 | transform.forward |
위의 슬라이드 쇼처럼 Rigidbody를 이용해 물체를 발사하는 Object를 만들어보았습니다.
이번 시간을 통해 RigidBody를 간단하게 알아보았습니다. 다음에는 Collider를 알아보는 시간을 갖아보도록 하겠습니다.
읽어주셔서 감사합니다.&>&
'Unity > Unity 3D' 카테고리의 다른 글
[Unity 3D] 터레인(Terrain)에 대해 알아보고 사용해보자 (1) (0) | 2024.08.07 |
---|---|
[Unity 3D] Collider, Triger에 대해서 알아보고 사용해보자 (0) | 2024.08.06 |
[Unity 3D] 에셋(Asset)과 FBX 모델 개요 및 FBX 모델 사용해보기 (0) | 2024.08.01 |
[Unity 3D] Unity 애니메이션에 대해 알아보자 (0) | 2024.07.31 |
[Unity 3D]Post Processing(포스트 프로세스) 알아보기 (0) | 2024.07.30 |