2D 피직스 적용하기

2D 게임용 피직스 구현 예제입니다.

Choose your operating system:

Windows

macOS

Linux

이 글에서는 2D 게임의 스프라이트에 피직스를 적용하는 예제를 살펴봅니다.

이 예제에서는 2D 횡스크롤 게임을 사용합니다만, 어떤 2D 게임에도 같은 개념을 적용할 수 있습니다.

2D 스타일 게임에서 피직스를 사용할 때, 카드가 플레이어에게 보여버리거나, 심지어 아래 그림에서처럼 게임 월드 밖으로 떨어져 버리는 상황이 발생하도록 스프라이트를 이동 또는 회전하지 못하도록 하기 위해, 보통은 스프라이트에 피직스를 적용할 때 약간의 컨스트레인트(제약)를 거는 것이 좋습니다.

위에서 스프라이트에 피직스 적용을 했지만 오브젝트가 낙하하도록 하는 피직스에 아무런 컨스트레인트를 걸지 않아서, 피직스를 적용한 것이 게임 월드를 벗어나 화면밖으로 나가게 만들었으니 바람직한 것은 아닙니다. 피직스 오브젝트가 월드와 플레이어 상호작용에 반응하도록은 하지만, 레벨 안에 유지시키면서 특정 축으로만 회전하도록 하여 스프라이트가 항상 보이도록 해야합니다.

스프라이트의 경우, 디테일 패널에서 컨스트레인트 적용뿐 아니라 피직스 적용도 가능합니다.

  1. 레벨에서 피직스를 적용하고자 하는 스프라이트를 선택합니다.

  2. 디테일 패널에서 Physics 아래 Simulate Physics 옵션을 클릭합니다.

  3. Constraints 를 펼친 뒤 Lock Position 을 선택합니다 (보통 횡스크롤 게임에서는 Y 축을 선택합니다).

    Constraints1.png

    이렇게 하면 피직스가 Y 축으로만 고정 적용되기는 하지만, 이 세팅만으로는 추가적인 문제가 생길 수 있습니다.

    스프라이트가 Y 축으로 고정되었지만, 여전히 자유롭게 회전되는 것을 볼 수 있는데, 바람직하지 않습니다.

  4. 마찬가지로 Constraints 섹션에서 Lock Rotation 을 선택합니다 (보통 횡스크롤 게임에서는 X 축을 선택합니다).

    Constraints3.png

    이제 스프라이트에 피직스가 적용되면, 그 위치는 Y 축으로 고정되고 회전은 X 축으로 고정됩니다.

    Mode 옵션을 사용해서도 이동을 지정된 축으로 제약을 걸 수 있습니다 (이 경우 XZPlane 로 하면 똑같은 효과를 낼 수 있습니다).

제작중인 2D 게임 유형에 따라, 다양한 세팅을 사용하여 오브젝트에 피직스 적용 방식에 제약을 걸 수 있습니다.

언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
건너뛰기