Unity-spatial 기초
- 왜인지 active가 안될때 : setting (톱니바퀴) - issues - check for issues 의 refresh 클릭하면 이유 알려줌!
- 유니티 공식 매뉴얼: https://docs.unity3d.com/Manual/webgl-templates.html
- 영상 하나로 툴키트 모두 살펴보기 : https://www.youtube.com/watch?v=6vSB1olBau8
- 자막 없고 어느나라 말인지 모르겠찌만, 뭔가 많은(trigger로 자동문 등) : https://www.youtube.com/playlist?list=PLs7ibWRUM5eFTQT2L5_Cy4sNNYHKOT8yS
- 스페이셜 유니티 전문으로 하는 듯(일본어): https://www.youtube.com/@my_gardenbee
목차
유니티 시작하고 맛보기
- 다운로드부터 업로드까지
- test active scene 시 무슨 파일이 없다고 하는데, 해당 경로 들어가서 <spatial-island_defaut_0>이 적힌 파일을 해당 파일명으로 변경해주면 됨!
- test 한 scene은 남에게는 공유할 수 없는 비공개 샌드박스에 저장됨!
공간 vs 공간 템플릿
- 공간: 공간 패키지 자산(배지)에 연결됨! creator tool kit 공간은 무조건 공간.
- 공간 템플릿: 재사용 가능한 환경 장면. creator tool kit에서 템플릿을 선택하면 새로운 공간으로 만들어짐~
텔레포트
- 공식 문서: https://docs.spatial.io/avatar-teleporter
- 별거 없음
- Collider가 활성화된 GameObject에 배치해야 함. -> Is Trigger 체크
- parent가 될 수 있으며, 애니메이션화도 가능
- Hierachy 창에서 Avatar teleporter - 위치 및 크기 조정 - target 위치 조정
- target을 기존 object위치로 할 것이라면, Teleporter object 에서 target location 을 변경해주면 됨!
- Hierachy 창에서 Avatar teleporter - 위치 및 크기 조정 - target 위치 조정
point of Interest
- i 표시의 마커 표시 -> 다가가면 제목과 설명 나옴!
- 공식 문서: https://docs.spatial.io/components/point-of-interest
- 더 잘하려면 vs스크립팅 : https://docs.spatial.io/visual-scripting-examples/point-of-interest-vs
트리거
- 공식 영상: https://www.youtube.com/watch?v=E8zE52pIVzQ&t=32s
- 공식 문서(심화로 읽어보아야 함!): https://docs.spatial.io/components/trigger-event
- 트리거 vs: https://docs.spatial.io/visual-scripting-examples/trigger-event-vs
- object 만들기 먼저 : hierachy 우클릭 - 3d object - cube 선택
- 만일 큐브가 안보이고 싶으면, inspector에서 Mesh를 none 선택!
- 초록색 실선의 구모양이 트리거 존이므로 크거나 작게 조절
- inspector 창의 enter event : 해당 영역에 들어갈때 이벤트
- exit event는 해당 영역에서 나갈 때 이벤트
- unity event is synced: 해당 사람만 보고 듣는지(체크 안하면) / 아니면 해당 공간의 모든 사람이 듣는 지(체크 하면)
- animator event : 장면의 연결된 애니메니터가 있는 경우 공간으로 이동하거나 애니메이션된 개체에 연결된 애니메이션이 재생
- quest event : 공간 퀘스트로 공간을 통해 사용자와 탐험가를 안내하고 특정 작업을 수행하거나 공간에서 특정 작업을 통해 진행상황을 얻을 수 있음
- 해당 목차 참조
트리거 만들기
- 큐브의 inspector에서 is Trigger 선택 - add component 클릭 - trigger 검색하여 spatial trigger event 선택
- 혹은 Hierachy 창에서 우클릭 - spatial - trigger event
- unity Event : + 눌러서 목차 만든 후에, 관련된 object를 inspector에 드래그앤드랍 - 기능선택 - 관련 작업
- 색상변경: mesh randerer - material material : 색상 변경(재료의 메시를 변경)시 선택 - 변경할 색상을 none에 드래그앤드랍
- 오디오 재생: Hierachy 에서 해당 오디오 파일을 우클릭 - audio - audio source 선택 - 오디오파일을 trigger 칸에 드래그앤드랍 - audio play 선택
- 해당 존을 벗어나면 오디오도 중지되어야 하므로 exit event도 설정해야 함 : 오디오파일 드래그앤드랍 - audio source - stop
퀘스트
- 공식 영상: https://www.youtube.com/watch?v=21OUsBrLMS8
- 공식 문서(좀더 심화): https://docs.spatial.io/quests
- Hierachy 에서 우클릭하여 spatial - quest 선택
- inspector 에서 quest name 설정과 description 설정(메타버스 화면에서 왼쪽 하단에 설명 뜨는 것!)
- start automatically: 자동으로 퀘스트 시작 (trigger를 통해서도 시작할 수 있음!)
- save user progress: 사용자별 진행상황 저장
- tasks are ordered: task가 순서를 갖도록 하는 것
- celebrate on on complete: 완료 축하(색종이 조각 애니메이션 진행)
quest rewards
- 배지 혹은 아이템 선택
- badge: spatial 스튜디오에서 만들면 됨
- 배지 공식문서(영상은 배지 문서 만들어지기 전): https://docs.spatial.io/quests/badges
- 배지 사이즈: 1024 x 1024 png인 원 모양, 1mb 최대.
- 배지는 Spatial Portal 에서 만들면 된다고 하는데.. 없다.
- project 에서 import new asset - 배지 파일 선택 - inspector에서 alpha source가 input texture alpha로 되어있는지 확인 - alpha is transparency 선택 - apply 클릭 - 다시 톱니바퀴(setting)에서 badge 클릭하여 select icon - create new badge
- item :
tasks
- 퀘스트를 완료하기 위한 작업들
- list를 먼저 만듦 - name 붙임
- type 선택
- check : 행동을 하면 체크가 됨
- 아래의 complete task와 매치되는 것
- progress bar: 코인 수집 같은 진행율을 나타낼때
- 아래의 add task progress와 매치되는 것
- check : 행동을 하면 체크가 됨
- task markers : 퀘스트 수행을 위해 화면에 마커를 남기는 기능
- 퀘스트에 해당하는 아이템을 묶어주기
- trigger event 만들기 - quest 에서 해야하는 것들 앞에 놓기 - on enter event에서 quest event 설정 - quest 이름 설정 - complete task - 세부 task 이름 설정
- trigger event가 이미 있는 것은 quest event만 설정하면 됨!
- prefab(파란색으로 표시되는)인 경우에는 >키를 누르면 해당하면 모든 prefab에 적용됨!!!!
샘플
- 공간 공식: https://docs.spatial.io/samples
- 비쥬얼 스크립팅 공식: https://docs.spatial.io/visual-scripting-examples
그 외
운전 가능한 차량
하버보드
- 하버보드 만드는 것이나 많은 것을 포함하므로 추천: https://www.youtube.com/watch?v=GhMZglNVqos
용어
- 공간(space): 여러 사용자가 참여하는 가상공간(메타버스)
- 세계: 동일한 경제를 공유하는 생태계 또는 공간 모음. 하나의 세계에 속할 경우 공간1의 항목을 공간2에서 사용할 수 있음.
- 패키지: unity를 사용하여 만든 시각적 자산
- 공간: unity를 통해 게시한 spatial 공간
- space template: unity에서 생성된 장면. 공간 템플릿으로 게시되면 공간이 바로 생성되지는 않고, 템플릿으로 공간을 만들 수 있음
- avatar: 맞춤형 아바타 자산
- avatar animation: 아바타가 재생할 수 있는 사용자 지정 애니메이션(댄스 감정 표현 등)
- 조립식 개체: 무엇이든 가능. 운전 가능한 차량 또는 대화형 개체와 같은 다른 유형의 개체도 포함
경제
- 경제: 사용자가 공간 내에서 얻고, 벌고, 구매할 수 있는 통화.
- 항목: 플랫폼에서 사용자에게 배포할 수 있는 항목
- 항목 유형: 대부분 패키지 유형에 매핑되지만, 통화 같은 일부 항목은 패키지에 연결되지 않음
- 화신
- emote: 사용자 반응패널에 표시되는 아바타 애니메이션
- 조립식 개체
- 아바타 첨부
- 통화: 나의 세계에 해당하는 토큰. 스크립팅을 통해 사용자에게 부여 가능
- 기본: 물리적 표현이 없는 항목. 공간에서 일부 콘텐츠를 트리거하거나 잠금 해제하는데 간단히 사용
- 품목 범위: 품목을 사용하거나 소비할 수 있는 곳
- 범용범위: spatial의 모든 공간에서 사용.
- 월드범위: 동일한 월드 내 이용
- 배낭: 사용자의 인벤토리
- 상점: 출시예쩡으로 공간 내 사용자가 구매할 수 있는 아이템 상점.
유니티 사용
glb 이용
- unity는 원래 glb를 지원하지 않음: https://zenn.dev/eightbeat/articles/8530fc7c833ba1 참고하여 플러그인 설치
- 이거 해도 색 안먹히고 모양도 뭉개짐 ㅠ 블렌더로 fbx로 변경해서 넣는게 모양이라도 보여서 좋을듯~
fbx 이용
- 색이 빠지므로 material 값을 설정해주어야 함
- 3D를 누른 후, inspector 창에서 materials 선택 = extract materials 선택 - material 폴더 따로 만들어줌
- 다시 3D 선택하여 material 칸의 ▽ 클릭 - surface inputs 에 base map 연결()