본문 바로가기

가상세계 산사VR

가상세계도 지진이 있나요? 가상세계 산사VR의 크레이 월드에서는 가끔 지진이 일어납니다. 물론 인위적이긴 하지만요 ㅎㅎ 크레이 월드 어딘가 이런 표지판이 있을텐데요. 지진을 일으키는 방법이 소개되어 있습니다. 스크립트 소스입니다 :) using Sansar; using Sansar.Script; using Sansar.Simulation; using System.Runtime.Serialization; using System; public class earthquakeScript : SceneObjectScript { public double earthQuakeTime=0.0; [DisplayName("강도")] [DefaultValue(0.4)] public double strength = 0; public override vo.. 더보기
가상세계의 드론(dron) 가상세계 산사 크레이의 월드에는 드론(dron) 이 있습니다. 이 드론이 얼마나 변덕스러운지 움직이다 멈추고 움직이다 멈추고 그러는데요 막 달려가 따라 잡으려고 해도 멈추는 듯 하다 갑자기 이동해버리는 바람에 따라 잡기가 여간 어려운게 아닙니다. 하지만 어느 지점에서 이 드론을 아주 가까이서 접할 수 있었지요. 그리고 이 때를 놓칠 새라 얼른 드론 위에 올라타보았더니 드론이 저를 태우고 하늘 높이 날아오르는게 아니겠습니까? 하지만 하늘에서 드론을 타고 버티는건 너무 힘들어서 곧잘 추락합니다. 다행인 것은 가상세계에서는 전혀 다치지 않는다는 것이지요 :) 뭐.. 이런 스토리입니다 :D :D :D 가상세계 산사의 드론은 현실 세계의 드론과 달라서 코딩은 아주 수월한데요. 간단히 코드 공개합니다 :) usin.. 더보기
가상세계 산사, The Fastest pet alive. '가장 빠른 펫'을 만나 보세요. 더 플래시(The Flash) 라는 미국 드라마를 아시나요? 세계에서 가장 빠른 사나이, 플래시 히어로가 악당들과 싸우는 미국 드라마인데, 히어로물이라니 웬지 어린이들이 볼것 같은 부류로 생각하시겠지만 천만의 말씀, 미국에서 성인분들에게 엄청 인기가 많습니다. 플래시 인트로의 핵심 대사는 "I'm the fastest man alive." ( 더 패스티스트 맨 얼라이브 ) 이지요. 비록 그런 정도는 아니지만, 크레이의 월드에서 가장 빠른 펫이 있습니다. 이 펫이 그러네요 "I'm the fastest pet alive" ( 더 패스티스트 펫 얼라이브 ) 라고요 :) 얼마나 빠르기에 자신하는 걸까요? 참고로 이 펫 모델은.. 제가 만든건 아니고.. 산사 스토어에서 무료로 구매했습니다 ㅎ.. The fast.. 더보기
가상세계 산사VR, Cray world, 극기훈련 컨텐츠?! 크레이 월드에 2번째 컨텐츠 "극기훈련"이 추가되었습니다. 컨텐츠라 하기에는 좀 그렇긴 하지만 좀 난이도가 있습니다 :) 고소공포증을 갖고 계신분이 VR 기기를 착용하고 시도해보신다면 극복에 도움을 줄지도 모르겠습니다. 크레이의 월드에는 하늘을 날아다니는 바위가 있습니다. 바위가 하늘을 날아다닌다니 중력의 법칙을 완전 무시해도 너무 무시하는게 아닐까 생각되는데요. 기독교에서 말하는 천국에서도 그런 신기한 일들이 벌어지고 있을지도 모르지요 :) 하늘에서도 바위가 왕복운동을 하는데요. 이 바위들을 점프해서 타고 타고 태극기 깃발이 있는 곳까지 가는 겁니다. 뭐... 보상은 없습니다 ㅎ.. 크레이는 운동신경이 둔한지라 백번은 시도한 것 같습니다. 중간에 도무지 안되서 난이도를 좀 낮추긴 했지만요 :) 크레이 .. 더보기
산사VR, 오브젝트간 통신 산사에서는 오브젝트들끼리도 이야기를 할 수 있습니다. 이른바 오브젝트들끼리의 통신인데요. 우리 사람들 몰래 오브젝트들끼리 이야기한다고 하니, 무슨 이야기를 할지 궁금해지는군요? :) 오브젝트간 통신에는 보내는 오브젝트, 송신에는 다음 명령이 사용됩니다. ScenePrivate.Chat.MessageScript(message, ScriptId.AllScripts, 1); 여기서 message 는 실제 통신할 내용을, 그리고 ScriptUd.AllScripts 는 모든 스크립트가 들어있는 오브젝트에 해당하고, 마지막 1은 채널 번호를 의미합니다. 채널은 마치 주파수와 같아서 각각 용도마다 그 값을 다르게 주어서 통신이 혼선되지 않게 하는 것이지요. 그리고 오브젝트의 받는 오브젝트, 수신에는 다음 명령이 사용.. 더보기
산사VR, 텍스트 채팅내용 인식하기 산사 VR에서도 세컨드라이프처럼 사용자의 텍스트 채팅 내용을 인식할 수 있는데요. channel 0번을 사용하는 것으로 보아 채널 사용원리는 동일한 것 같습니다. 세컨드라이프에서도 채널 0번은 일반 사용자가 채팅창에서 볼 수 있는 채널이거든요. 0번 채널로부터 메시지를 수신받는 함수는 아래와 같습니다. ScenePrivate.Chat.Subscribe(0, null, ChatMessage); 다만 ChatMessage 라는 콜백 함수의 이름을 함께 전달해 주는데요. 세컨드라이프와는 달리 콜백 함수의 이름은 자유롭게 정의하실 수 있습니다. 콜백 함수는 아래와 같이 정의하는데요. 여기서 중요한 파라미터는 3개로서 Channel 은 요청된 채널로서 여기서는 당연히 0이고, SourceId 는 채팅한 사람 또는.. 더보기
가상세계 산사 VR, 선택버튼 알아내기 이번 스크립트는 지난 시간에 이은 Alert 팝업창의 선택 버튼 판정 버전입니다. 지난 시간에 Alert 와 같은 팝업창을 다루어 보았지만 버튼이 2개일 때 어떤 버튼을 선택했는지 알 수 없는 문제가 있었지요? 원래는 ModelDialog.Response 에 그 값이 들어오긴 하지만, 문제는 팝업창을 띄우고 난 다음 사용자가 버튼을 선택하기 전에 그 다음 행을 계속해서 쭉쭉 실행해 나가는 문제로 인하여 아래와 같은 코드는 제대로 실행이 안됩니다. 아예 2번째 팝업창은 뜨질 않더라구요. // 유저의 클라이언트에 메시지를 띄워줍니다. agent.Client.UI.ModalDialog.Show(message, "확인", ""); : 사용자에게 팝업창을 띄우고 이 뒷부분으로 실행 계속 agent.Client.U.. 더보기
가상세계 산사VR, Alert 스크립트 가상세계 산사VR은 린든랩에서 포기한 컨텐츠라고도 합니다. 이른바 컨텐츠의 부족 현상 때문이라고도 하는데요. 린든 랩에서 결국은 다른 업체로 산사를 넘겼다고 합니다. 그래서 해외에서는 "Sansar is dead" 라고도 표현합니다. 최근 유튜브에 한동안 뜸했던 세컨드라이프 메이커 영상들이 다시금 활성화되는 것을 그 이유 때문이 아닌가 싶기도 합니다. 산사에서의 외국 게시글들을 보니 컨텐츠의 꽃이라 할 수 있는 기능을 담당하는 스크립트 부분이 과거 세컨드라이프에 비해 매우 난해해졌기 때문에 무언가를 만들기 대단히 어려워졌다고 하는데 실제로 해보니 그렇습니다. 세컨드라이프의 스크립트 시스템은 이른바 실시간 '인터프리터' 스크립트 시스템입니다. 눈 앞에서 실시간으로 무언가를 뚝딱 만들어서 앞에 있는 다른 사.. 더보기