공모전 일지4 - 텔레포트

Boyeong·2023년 5월 21일
0

제페토

목록 보기
4/13
post-thumbnail

230317

[2023 메타버스 달서 공모전] 출품을 위해, 제페토를 공부하는 일지

1. 캐릭터 텔레포트

게임 오브젝트 이동과 텔레포트로 완성하는 점프맵 - Step 4

[제페토 월드 무작정 따라하기] Part 4. 제페토 캐릭터 텔레포트하기

(1) 포탈 에셋 다운 및 적용

  • 텔레포트 구현 전에, 어울리는 포탈 이펙트를 하나 적용해 보기 위해, 유니티 에셋 스토어를 구경해 보았다.

  • 내 에셋에 추가하기 버튼을 누른 후, 유니티에서 이 에셋을 임포트 해와야 한다.

  • 유니티 최상단 메뉴 [Window] → [Package Manager]

  • Packages: My Assets에서 추가한 에셋을 임포트한다.

  • 에셋을 임포트하니, 나 같은 경우에는 Asset 폴더에 새 폴더가 하나 생겼고, 그 안에 포탈 프리팹이 있어 그걸 가져온 후, 캡슐 콜라이더 컴포넌트도 추가했다.

  • 저 포탈에 캐릭터가 닿았는지를 판단하기 위해, isTrigger를 체크한다.

(2) 스크립트 작성


  • 📑 Teleport.ts 스크립트 생성

  • 변수

    private Player: ZepetoCharacter;
  • Start() 함수

    Start() {
        ZepetoPlayers.instance.OnAddedLocalPlayer.AddListener(() => {
            this.Player = ZepetoPlayers.instance.LocalPlayer.zepetoPlayer.character;
        });
    }
    • 제페토 플레이어를 불러오는지 Listener가 듣는 코드이다. (싱글플레이 게임인 경우만)
    • 로컬 플레이어가 정상적으로 생성되면, 그걸 this.Player로 설정하는 코드이다.
  • OnTriggerEnter() 함수

    // 이 게임 오브젝트(포탈)의 트리거에 다른 물체가 닿으면 실행
    OnTriggerEnter(collider: Collider) {
        if (this.Player == null || collider.gameObject != this.Player.gameObject)
            return;
    
        this.Player.Teleport(new Vector3(0, 0, 0), Quaternion.identity);
    }
    • 게임 오브젝트(포탈)에 다른 물체가 닿으면 실행되는 함수이다.
      • 두 개의 게임 오브젝트 모두 콜라이더 컴포넌트를 가지고 있어야 한다.
      • 그 중 하나는 isTrigger가 활성화되어 있어야 한다.
      • 적어도 하나는 리지드바디 컴포넌트를 가지고 있어야 한다.
    • 만약 Player가 null이거나, 포탈에 닿은 물체가 플레이어가 아니면, 함수를 종료한다.
    • 그렇지 않으면 Player를 (0, 0, 0) 좌표로 텔레포트한다.
      • Teleport() 함수
        • 첫 번째 인자: 위치 (벡터 값, 특정 오브젝트의 좌표 등이 들어갈 수 있다.)
        • 두 번째 인자: 회전 (회전할 필요가 없는데 인자가 필요한 경우, Quaternion.identity를 사용한다.)

  • 실행 결과

2. 다음에 할 일

3. 후기

  • 가이드 영상과 자료 너무 친절하다... 매일 조금씩 따라만 하는데도 뭔가 잘 될 것 같은 기분...
  • 사실 제일 걱정되는 건 맵 디자인이다. 엄청난 노가다가 될 것 같다. 평소에 즐겨하는 게임에도 비슷하게 맵을 꾸미는 컨텐츠가 있는데, 매번 휑하니 방치 중이다. 이런 내가 디자인을 할 수 있을까...? 걱정이 된다. 파이팅!

0개의 댓글