층을 선택할 수 있는 3층짜리 엘리베이터를 만들어봤습니다. 일단 가동이 되는 모습은 아래와 같습니다.
자석블럭이 있긴 하지만 뭔가 만들기에는 기능이 너무 제한적이어서 고민을 하다가, 밀어내거나 당기는 블럭의 범위 안에 들어오는
블럭들이 모두 한덩어리처럼 움직이는 것을 이용해서 범위를 조금씩 달리하면 원하는 만큼만 움직일 수 있겠다 싶어서 만들어봤습니다.
영상에서 보이는 엘리베이터 바닥과 좌우에 작은 블럭기둥이 상황에 따라 함께 또는 따로 움직이도록 설계되어있습니다.
고작 3층짜리인데도 스위치의 구조가 매우 복잡해질 수 밖에 없는데, 영상을 보시면 대충 감은오실겁니다.
모든 층의 제일 왼쪽은 1층, 가운데는 2층, 오른쪽은 3층으로 가는 버튼인데 버튼 모양은 설계를 잘 하면 올라가는 것은 위로 가는 삼각형으로
내려가는 것은 아래로 보는 삼각형으로 할 수 있습니다만 어차피 테스트용이라서 대충 편한방법으로 했습니다.
정면에서 보면 이렇게 구성되어있습니다. 좌우 바는 사실 제일 윗블럭과 아래 블럭만 있으면 됩니다. 보기 좋으라고 사이에도 다 채워넣었어요.
전 1,2층을 움직일 땐 무조건 왼쪽블럭과 함께 움직이도록 하고 그와 동시에 오른쪽 블럭이 반대로 움직이도록 설계했습니다.
반대로 2,3층을 움직일 땐 오른쪽 블럭과 함께 움직이고요. 이 부분은 여러가지 다른 방법이 있을 수 있습니다. 영상에서도 스샷에서도 최하단의 밀어내는 블럭은 안보이는데
배치는 영상에서 나오는 엘리베이터 천정의 블럭들과 같습니다. 가운데 블럭은 범위가 엘리베이터 바닥에만 딱 영향을 미치고 좌우 한칸 어긋나있는 블럭은
각각 좌우의 블럭과 바닥을 모두 포함하는 범위를 커버합니다.
참고로 밀어내거나 당기는 블럭의 범위는 상하좌우 세칸을 포함하는 정사각형(총 7x7)입니다.
그리고 좌우블럭만을 독립적으로 움직이는 것도 필수적으로 필요하기 때문에 꼭 위치가 저기(좌우 떨어진 부분의 파란블럭)는 아니더라도 따로 또 두 세트가 필요합니다.
결론적으로 어떤식으로 설계를 하든 밀어내기+당기기 블럭이 최소 10개는 필요합니다.
(좌우블럭중 하나만 만들고 스위치를 이용한 딜레이를 활용하면 6개만으로도 가능하긴 합니다.)
정리를 하면 더 깔끔하게 될텐데 아이디어만 가지고 무작정 만들기 시작해서 스위치들이 좀 멋대로 놓아져있습니다. 이 스샷에서 보이는 모든 스위치는 실제로 구동에 다 사용되는 스위치이고 가려진 엘리베이터 뒷편에도 물론 스위치가 있습니다.
한 층 정도를 더 올리는게 불가능한건 아닌데 그렇게 되면 구조가 정말 엄청 복잡해져서 따로 시도해볼 생각은 하지않았습니다.
다음은 스위치 전달의 딜레이를 이용한 자동문입니다. 스토리 깨던 중에 스위치를 몇개만 설치해봤을 땐 아예 딜레이가 없는줄 알았는데
최강세가님께서 올려주신 공략글(https://bbs.ruliweb.com/game/ps/84950/board/read/9419271)을 보고 딜레이의 존재를 알게되어 이를 이용하면
자동으로 열렸다가 닫히는 문을 만들수 있겠다 싶어서 시도해봤습니다.
닫혔을 때와 열렸을 때의 모습인데 파란 블럭을 이런식으로 배치하면 양쪽으로 열렸다 닫히는 형태가 됩니다. 문의 크기나 열리는 거리 등은 어느정도 조절가능합니다.
문 앞의 스위치를 밟으면 문을 여는 것과 캐릭터 뒤쪽의 스우치밭을 동시에 작동시키고, 열렸던 문이 스위치밭의 딜레이를 지나 다시 닫히도록 설계했습니다.
이를 완성시키면
이렇게 움직이는 자동문을 만들 수 있습니다. 문이 열려있는 시간은 스위치 개수로 조절할 수 있습니다.
실제로 마을에 이런 자동문을 만들 땐 스위치 바닥은 지하에 묻어버리면 될 것 같습니다.
ㅊㅊ
엘리베이터는 어려워요 ㅠㅠ
조금 간략하게 설명하자면, 좌우측 블럭들이 어떤역할을 하는지는 영상을 보시면 알수 있으실테고, 알단 좌우측 블럭을 각각 LB, RB, 바닥을 FL로 부르겠습니다. 제가 만든 방식은 엘리베이터가 어디서 어떤 층으로 가든 같은 층일 때는 LB, RB, FL이 동일한 위치에 있도록 만들었습니다. 밀어내기블럭은 FL, (LB+FL), (RB+FL), LB, RB 이렇게 다섯가지 범위가 되도록 설정합니다. - 먼저 1->3층과 3->1층의 경우 FL만 움직이도록 설정합니다. 당연히 가장 간단하죠. - 1->2층일 땐 (LB+FL)을 올리고 동시에 RB를 내리도록 설정합니다. 2->1층은 반대로 합니다. - 2->3층일 땐 (RB+FL)을 올리고 동시에 LB를 내리도록 설정합니다. 3->2층은 반대로 합니다. 위에서 말한대로 전 같은 층일 땐 항상 좌우블럭이 동일하게 움직이도록 해서 이런 구조가 되었습니다. 이런 형태로도 구성할 수 있습니다. 이 방법은 1,3층으로 움직이게 될 때 무조건 LB, RB가 동일한 위치에 있도록 만드는 것입니다. 안해봐서 모르겠지만 나중에 생각한건데 스위치 설계는 어쩌면 이게 더 간단할수도 있습니다. - 1->2층으로 움직일 땐 (LB+FL)만 올립니다. - 3->2층으로 움직일 땐 (RB+FL)만 내립니다. - 어디에서든 1층으로 움직일 땐 FL만 따로 내리고 LB는 내리고 RB는 올립니다. 세 가지가 동시에 작동해야합니다. - 어디에서든 3층으로 움직일 땐 FL만 따로 올리고 LB는 내리고 RB는 올립니다. 세 가지가 동시에 작동해야합니다. LB와 RB는 이미 원래 위치에 있어서 움직이지 않을 수도 있지만 무조건 밀어내기 자체는 작동하도록 해두면 됩니다. 이 방식은 2층으로 갈 때만 LB와 RB를 이용하고 1층이나 3층을 갈 땐 LB, RB를 원위치 시키는 방법입니다. 생각을 해 보면 다른 더 간단한 방식이 나올지도 모릅니다. 하지만 어떤방법을 쓰든 (화살표말고) 바닥스위치나 벽면스위치를 이용해야 할 상황이 생기고, 밀어내기/당기기 블럭을 10개나 써야하는데 이것들이 범위를 가지고 있어서 설계단계에 신경을 좀 많이 써야합니다. 중간중간 화살표 스위치가 서로 걸리지 않게도 신경써줘야 하고요... 밀어내기 블럭이랑 바닥스위치의 범위만 설정이 되어도 상당히 수월하게 만들 수 있을텐데 그게 아니라서 초기 설계가 좀 빡세긴 해요.