ZEPETO Character
ZEPETOCharacter는 월드 씬에 로드하기 위한 기본 ZEPETO 캐릭터 인스턴스 단위입니다.
ZepetoCharacter를 제어하려면 스크립트에 다음 import 문을 추가하세요.
이 API는 애니메이터 컨트롤러 및 캐릭터 컨트롤러 구성 요소를 포함하여 ZEPETO 캐릭터 인스턴스를 생성하고 제거합니다.
API | 설명 |
---|---|
CreateByZepetoId(zepetoId: string, spawnInfo: SpawnInfo, complete: System.Action$1) | ZEPETO ID를 사용하여 ZEPETO 캐릭터 인스턴스를 생성합니다. 주로 NPC 캐릭터 생성을 위해 사용됩니다. |
CreateByUserId(userId: string, spawnInfo: SpawnInfo, complete: System.Action$1) | UserId로 ZEPETO 캐릭터 인스턴스를 생성합니다. 주로 NPC 캐릭터 생성을 위해 사용됩니다. |
RemoveCharacter(character: ZepetoCharacter) | 캐릭터 인스턴스를 삭제합니다. |
이 API는 애니메이터 컨트롤러 및 캐릭터 컨트롤러 구성 요소를 제외한 ZEPETO 캐릭터 모델 인스턴스를 생성합니다.
- ZEPETO ID : 사용자가 직접 지정하고 ZEPETO 앱 내에서 사용하는 ID 값입니다.
- User ID : ZEPETO 시스템 내에서 사용자를 구별하는 고유 ID 값이며, UI에 노출되지 않는 값입니다. 스크립트를 사용하여 확인할 수 있습니다.
ZepetoCharacter API에 관심이 있으시면 문서를 참조하세요:
예제를 실행하면 왼쪽의 CharacterModel이 아래와 같이 Animator Controller 및 Character Controller 구성 요소 없이 생성되는 것을 볼 수 있습니다.
장면의 캐릭터 인스턴스에서 스크립트를 통해 캐릭터를 직접 제어할 수 있는 인터페이스가 제공됩니다.
API | 설명 |
---|---|
MoveToPosition(position : Vector3) | 캐릭터를 위치로 이동시킵니다. |
MoveContinuously(direction : Vector3) | 캐릭터가 바라보는 방향으로 지속적으로 이동합니다. (업데이트) |
MoveContinuously(direction : Vector2) | 캐릭터가 바라보는 방향으로 지속적으로 이동합니다. (업데이트) |
StopMoving() | 캐릭터의 이동을 멈춥니다. |
Jump() | 캐릭터가 설정된 점프 파워로 점프합니다. |
DoubleJump() | 캐릭터가 현재 설정된 더블 점프 파워로 더블 점프합니다. (MotionController V2 사용 시에만 적용) |
Teleport(position: UnityEngine.Vector3, rotation: UnityEngine.Quaternion) | 캐릭터가 즉시 변환합니다. |
SetGesture(gesture: UnityEngine.AnimationClip) | 지정된 AnimationClip에 대해 캐릭터의 동작이 재생됩니다. SetGesture가 실행되는 동안 사용자의 제어 입력은 캐릭터에 적용되지 않습니다. AnimationClip의 루프 옵션이 켜져 있으면 CancelGesture()가 호출될 때까지 계속 재생됩니다. |
CancelGesture() | SetGesture()를 통해 현재 재생 중인 Animation Clip의 재생을 중지합니다. CancelGesture()가 실행되면 사용자의 제어 입력이 다시 캐릭터 제어에 적용됩니다. |
예제를 실행하면 복제된 캐릭터가 다음과 같이 지정된 작업을 순서대로 수행하는 것을 볼 수 있습니다.
📘 다음 가이드를 참조하십시오. [NPC 만들기]
ZEPETO 캐릭터의 모션 상태와 관련된 API는 다음과 같습니다:
API | 설명 |
---|---|
motionState.useDoubleJump = (boolean); | 캐릭터가 더블 점프를 사용할 수 있는지 설정합니다. |
motionState.doubleJumpPower = (number); | 캐릭터의 더블 점프 파워를 설정합니다. |
motionState.useLandingRoll = (boolean); | 캐릭터의 착지 롤을 사용할지 설정합니다. |
motionState.landingRollSpeed = (number); | 캐릭터의 착지 롤 속도 값을 설정합니다. |
motionState.useMoveTurn = (boolean); | 캐릭터의 이동 회전을 사용할지 설정합니다. |
motionState.Gravity = (number); | 캐릭터의 중력 값을 설정합니다. |
motionState.CurrentJumpState | 캐릭터의 현재 점프 상태를 확인할 수 있습니다. - 없음 = -1, 점프 대기 = 0, 점프 이동 = 1, 점프 대시 = 2, 점프 더블 = 3 |
motionState.CurrentLandingState | 캐릭터의 현재 착지 상태를 확인할 수 있습니다. - 없음 = -1, 착지 약간 = 0, 착지 깊게 = 1, 착지 롤 = 2 |
motionState.CurrentMoveState | 캐릭터의 현재 이동 상태를 확인할 수 있습니다. - 없음 = -1, 이동 걷기 = 0, 이동 달리기 = 1 |
API | 설명 |
---|---|
StateMachine.constraintStateAnimation | ZEPETO.World의 1.6.0 버전부터, CharacterStateMachine에서 재생되는 Animation의 전환은 Motion V2의 CharacterState에 따라 On/Off할 수 있습니다. - true : 컨트롤러 입력에 영향을 받는 ZepetoCharacter.CurrentState를 끄고 원하는 애니메이션 클립을 제어합니다. |
👍 constraintStateAnimation 사용 예시
- 캐릭터가 걷는 애니메이션 대신 수영 애니메이션을 사용하도록 하려면, 수영 애니메이션 클립을 새로운 상태에 적용하고 constraintStateAnimation을 통해 상태를 고정할 수 있습니다.
- 캐릭터를 이동시키는 동안 제스처 애니메이션을 사용하고 싶다면, 제스처 애니메이션 클립을 새로운 상태에 적용하고 constraintStateAnimation을 사용하여 고정된 상태로 캐릭터를 이동시킬 수 있습니다.
- 이것은 Animator State에 적용된 매개변수 값을 일시적으로 무시하면서 특정 애니메이션을 강제로 재생하고 싶을 때 사용할 수 있습니다.
유니티엔진 애니메이터 기능은 ZepetoAnimator 형태로 제공됩니다.
예를 들어, 특정 캐릭터 애니메이터 "상태" 매개변수에 정수 값을 설정하려면 다음을 사용할 수 있습니다.
자세한 사용법은 유니티엔진 애니메이터 문서와 아래 샘플 스크립트를 참조하십시오.
📘 유니티엔진 애니메이터 https://docs.unity3d.com/ScriptReference/Animator.html
플레이어가 제어하는 로컬 플레이어 ZEPETO 캐릭터의 애니메이터 제어 예제입니다.
예제를 실행하면 StateMachine.constraintStateAnimation의 값이 True일 때 CharacterStateMachine에서 재생되는 Animation의 전환이 꺼진 것을 볼 수 있습니다.
StateMachine.constraintStateAnimation 값을 False로 설정하면 원래 상태로 돌아갑니다.
ZEPETO.CharacterController 패키지의 1.11.3 버전부터 ZepetoCharacter Shadow 객체에 접근할 수 있는 인터페이스가 추가되었습니다.
API 사양:
target | - CharacterShadow 객체의 변환을 조정하기 위한 참조 역할을 하는 객체입니다. - 기본적으로 ZEPETO 캐릭터가 대상입니다. 지정된 캐릭터의 바닥을 기준으로 CharacterShadow 객체의 변환이 조정됩니다. |
---|---|
autoSyncTransform | - 그림자의 위치를 조정할지 여부를 결정하는 플래그 값입니다. - 기본값은 true입니다. |
이를 통해 런타임에서 Zepeto 캐릭터의 그림자를 제어할 수 있습니다. 아래는 그림자를 켜고 끄는 토글을 사용하는 예제 코드입니다.