스파르타 게임개발종합반(Unity)/사전캠프 공부 기록

[Unity] 밑에서 위로 올라가는 물체의 중력 - Rigidbody, Dynamic, Kinematic 차이

테크러너 2024. 4. 3.

밑에서 위로 올라가는 물체의 중력

강아지가 고양이에게 밥을 먹이는 게임인데요

문제는 밥에 Rigidbody를 적용했는데, 밑에서 위로 올라가면서 중력의 영향때문에 밑으로 떨어지는 현상이 일어납니다.

밥이 위로 계속 발사되게 하려면, Rigidbody의 속성을 건드려야 합니다.

 

Rigidbody 에서 Body TypeDynamic이 아닌 Kinematic으로 바꾸면 해결됩니다.

Kinematic으로 바꾸면 더이상 중력의 영향을 받지 않게 됩니다.

 

주의할 점!

Kinematic으로 바꾸면 OnCollisionEnter 로직도 동작하지 않게 됩니다. 물리 영향을 안받기 때문입니다.

그래서 Collider에 있는 is Trigger 옵션을 켜서 OnTriggerEnter 함수를 사용하시면 됩니다.

    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject.CompareTag("Food"))
        {
            Debug.Log("맛있다.");
        }
    }

 

 

Dynamic VS Kinematic

1. Kinematic Rigidbody:
- Kinematic rigidbody는 외부 힘에 의해 움직이지 않고, 코드로 직접 제어되는 rigidbody입니다.
- 다른 물리적 요소와 상호작용하지 않고, 직접적인 코드 제어를 통해 움직임을 조절합니다.
- 주로 캐릭터나 플레이어와 같이 외부 요인에 의해 움직이지 않고, 코드로 제어해야 하는 객체에 사용됩니다.

2. Dynamic Rigidbody:
- Dynamic rigidbody는 외부 힘에 의해 움직이며, 물리 시뮬레이션에 의해 영향을 받는 rigidbody입니다.
- 중력이나 충돌과 같은 물리적 요소에 의해 움직이며, 물리 시뮬레이션에 따라 움직임이 결정됩니다.
- 주로 물체나 총알과 같이 외부 요인에 의해 움직이며, 물리 시뮬레이션을 적용해야 하는 객체에 사용됩니다.

따라서, kinematic rigidbody는 코드로 직접 제어되는 객체에 사용되고, dynamic rigidbody는 외부 요인에 의해 움직이며 물리 시뮬레이션을 적용해야 하는 객체에 사용됩니다.

반응형

댓글