대다수의 게임엔진들이 가지고 있듯이, 로블록스 게임에서도 3D 물리엔진이 기본 제공된다. 현실성있는 움직임을 보여주기 위해서 물리엔진을 사용하면 꽤 편리할 수 있다. 예를 들어, 캐릭터가 지나가면 자연스럽게 열리는 문을 생각해보자. 물리 엔진없이 구현하려면 여러가지 생각할 것도 많고 무엇보다 현실의 문과 다르게 움직일 것이다. 이런 경우는 물리 엔진을 사용해서 구현하는 것이 편리하다.
캐릭터의 움직임에 반응하여 열리는 문을 만들어 보겠다. 현실의 문의 경첩은 문이 움직이는 회전 운동에도 영향을 주고 최대한 꺽일 수 있는 제한도 정해 준다. 여기서는 최대한 현실의 경첩 움직임을 흉내 내보자.
도어 3D 모델
아래의 이미지와 같은 도어 모델을 준비하자. 로블록스의 정식 튜토리얼에 나오는 모델이므로 분명 링크가 있는데... 본인은 찾지를 못했다. 도어 모델을 찾은 사람은 그 도어모델을 사용하고 없어도 상관은 없다.
못 찾은 나같은 사람은 아래와 같이 탐색기에 Door라는 모델을 만들고, 그 안에 Door 파트와 DoorFrame 파트를 만들어 놓자. 회색 부분이 DoorFrame이고 나무색이 Door 파트이다.
먼저 플레이를 해서 테스트를 해보면 캐릭터의 움직임에 둘다 반응할 것이다. 밀면 밀리는 파트인 상태인데, 크기가 작으면 밀려서 쓰러지기도 할 것이다. 그런데 DoorFrame의 경우는 밀어도 밀리면 안된다. 그래서 DoorFrame의 Ancored는 활성화해서 움직이지 않게 해준다.
그 다음에 Door 파트와 DoorFrame 파트에 Attachment를 추가한다.
각각 DoorAttachment 와 FrameAttachment 로 이름을 변경해 둔다.
Attachment는 모델이나 파트의 특정 포인트를 지정하고 싶을 때 사용한다. 파트나 모델은 3D 의 부피를 가지고 있어서 Attachment 로 따로 포인트를 지정하고 싶을 경우가 있다. 이 경우에는 경첩의 위치를 지정할 수 있다.
Attachment의 이동
파트에 attachment를 새로 붙히면(만들면) 파트의 정가운데 위치하게 된다. 도어와 프레임에 붙힌 Attachment는 경첩으로 사용할 셈이므로 각각 오른쪽과 왼쪽에 붙혀서 서로 마주보게 만들어 줘야 할 것이다. 경첩의 역할을 생각해보면 이해가 빠를 것이다.
평상시에는 Attachment의 모습이 보이지 않는다. 로블록스 스튜디오의 Model 탭에서 Constraint Details 를 활성화시켜주면 attachment의 기즈모의 모습을 볼 수 있다.
이제는 FrameAttachment 를 선택하고 이동상태(Ctrl+2) 에서 이동시키면 움직이는 동그라미 모습을 볼 수 있을 것이다.
attachment를 선택한 상태에서 F키를 누르면 해당 오브젝트로 포커스가 모이고 필요하다면 줌도 해준다. 필요하다면 F키를 사용하여 DoorAttachment와 FrameAttachment를 아래의 이미지처럼 프레임과 도어의 닿는 면을 서로 마주보게 위치 시킨다. 경첩의 역할을 하기 때문에 서로 바로 마주보고 있지 않으면 이상한 방향으로 회전될 수 있다.
Model탭의 Snap to Grid 사용해서 딱딱 떨어지는 위치를 잘 잡아줘야 한다.
Attachment 회전시키기
attachment의 방향은 constraint가 움직일 수 있는 범위에 영향을 준다. 이 포스팅의 두 attachment를 모두 회전되어서 현실의 경첩이 움직이듯이 좌우로 움직여야 한다. FrameAttachment 위로 마우스를 올려보면 주황색 화살표와 노란색 화살표가 나온다. 노란색이 X축, 주황색은 Y축이다. 아래의 이미지 참고.
이런 상태에서 HingeConstraint 로 두 attachment를 적용시키면 아래 동영상과 같은 도어의 움직임을 볼 수 있다. X축인 노란색 축을 중심으로 도어가 돌아가기 때문이다.
본인이 직접 attachment를 붙혀보니 노란색 축, 즉 X축이 위의 동영상과 반대로 되어 있었다. 파트의 상태에 따라 다를 수 있으니 참고하자.
어쨋든 이 상태는 정상적이지 않으니 도어를 정상적으로 회전시키기 위해서 attachment를 회전시킨다. 정확한 회전을 위해서 마우스를 이용하지 않고, Model 탭의 Snap to Grid를 사용한다. 거기서 아래의 이미지와 같이 Rotate 를 활성화 하고 90도를 입력한다.
그러고 나서 로테이션 툴을 사용(Ctrl+4)하여 아래의 이미지처럼 노란색 X축이 위를 향하게 조절한다.
다음글
'로블록스 개발 중급' 카테고리의 다른 글
관람차 만들기 (0) | 2021.05.04 |
---|---|
자연스럽게 열리는 문 만들기(2) (0) | 2021.05.03 |
파트에 붙어 있는 GUI 구현 (0) | 2021.04.30 |
가까이 가면 나오는 GUI - Proximity Prompts (0) | 2021.04.29 |
버튼 만들기 (0) | 2021.04.28 |