ZEPETO CharacterController allows avatar loading, character movement and camera control functions.

## STEP 1 : Generate
In the Hierarchy window, select ZEPETO → ZepetoPlayers tab.

<br>
An object called ZepetoPlayers will be automatically created as shown below. ZepetoPlayers is a component that manages character controller modules within the World.
Set values for character control and related functions can be set in the Inspector window.

<br>
## STEP 2 : To Load Character
Once the CharacterController setting is complete, use the provided script to load a character.
Add a GameObject in the Scene and add the ZEPETOScript as shown below.

<br>
You can load ZEPETO characters with controllers directly to the Scene.
Enter the ZEPETO ID in [ZEPETO_ID] to load the character.
Caution
When releasing the world, you should modify the code based on the ZEPETO ID of the user who accessed the world, instead of the ZEPETO ID entered in the code.
Please refer to the following guide. [\[Create a ZEPETO Character\]](🔗)
<br>
## STEP 3 : To Run CharacterController
Use the [▶︎(play)] button at the center of the screen to check that the CharacterController is working properly.
CharacterController has a common character control Key Mapping for each Input Event corresponding to the device (PC/Mobile). Thus, the loaded character can be controlled in a Scene regardless of the platform.
On a PC, characters and cameras can be operated with a mouse. On a mobile device, characters and cameras can be operated with a virtual pad as shown in the screenshots below.

Mobile Device Screen (Vertical Mode)
<br>

Mobile Device Screen (Horizontal Mode)
<br>
The following input interfaces are supported for character control:
**PC**
Move: Keyboard arrows, WASD
Jump: Space
Double Jump : (Left) Shift
Zoom: Mouse wheel
Rotate: Screen drag
**Mobile**
Move: (Bottom left screen)virtual pad
Jump: (Bottom right screen)virtual pad button
Zoom: (Two fingers)screen drag
Rotate: (One finger)screen drag
<br>
## STEP 4 : To Set Up
You can change the settings of the Character Controller with Default Setting.
Click the ZepetoPlayers object created in the Hierarchy window, then you can view the settings of the currently applied Controller by Parameter in the Inspector window.

<br>
When creating LocalPlayer, ZepetoCamera normally focuses on the upper part of local character's head, and moving the camera / character will cause it to continue following.
Details of each item are as follows.
## STEP 4-1 : Camera (Previous Version)

Camera (Previous Version)
Camera (Previous Version) Parameters | Description |
Prefab | (LocalPlayer) MainCharacter flow Camera |
Look Offset | Standard location for Camera Focusing (based on Character Head) |
Zoom(Max) | Zoom Out Maximum Range |
Zoom(Min) | Zoom In Maximum Range |
Rotation Angle(Max) | (Vertical + Direction) Rotation limit range |
Rotation Angle(Min) | (Vertical - Direction) Rotation limit range |
Lock X Axis | Whether Rotation is locked or not |
Collision Layer | Layer to which camera collision is applied |
Speed | Rotate and Zoom speed for Input Value |
Sensitivity | Rotate and Zoom sensitivity for Input Value |
To change the relative position of Target and Camera, try changing the following properties:
Distance : Zoom, maxZoomDistance, minZoomDistance
Rotation : Sensitivity, Speed
<br>
## STEP 4-2 : Camera (Enhanced Version)
Starting with ZEPETO.World-1.6.0 version , further enhanced camera modules are available. (available after ZEPETO Apps 3.15.0)
Pressing the 'Replace with Enhanced Camera' button on the top will replace the new camera module. The new camera module is highly compatible with all functions of the existing camera module.
Caution
New camera module via Inspector → Reverse replacement of existing camera module is not supported.

Camera (Enhanced Version)
Camera (Enhanced Version) Parameters | Description |
Prefab | (LocalPlayer) MainCharacter flow Camera |
Look Offset | Standard location for Camera Focusing (based on Character Head) |
Zoom(Max) | Zoom Out Maximum Range |
Zoom(Min) | Zoom In Maximum Range |
Zoom Speed(Base) | Zoom In/Out speed (for Input Value) |
Zoom Speed(Damp) | Zoom In/Out's speed Interpolation value (for DeltaTime) |
Rotation Angle(Max) | (Vertical + Direction) Rotation limit range |
Rotation Angle(Min) | (Vertical - Direction) Rotation limit range |
Rotation Lock X Axis | (Vertical direction) Whether Rotation is locked or not |
Rotation Speed(Base) | Rotation speed (for Input Value) |
Rotation Speed(Damp) | Rotation speed interpolation value (for DeltaTime) |
Collision Layer | Layer to which camera collision is applied. - Layer set to Player Layer does not apply. |
Use Character Culling | When checked, Character Culling is applied when the camera collides with the character. |
<br>
## STEP 4-3 : Player
MotionController : Select Motion Controller Version (V1, V2)
Improved Character MotionV2 with ZEPETO.World-1.1.6. (Compatible with Zepeto App 3.11.2 or later)
Core Motions are backwards compatible between V1 and V2.

Motion Controller V1
<br>

Motion Controller V2
<br>
Type | Parameter Name | Description |
V1, V2 Similarities | Animator Controller | Animator Controller used by the Character |
V1, V2 Similarities | Walk Speed | Movement speed of the Walk Input Event |
V1, V2 Similarities | Run Speed | Movement speed of the Run Input Event |
V1, V2 Similarities | Jump Power | Jump height of the Jump Input Event |
V2 exclusive - DoubleJump
![]() | UseDoubleJump | Allows double jump if checked. - If double jump condition is checked, the default input for double jump is Left Shift. |
V2 exclusive - DoubleJump | DoubleJump Power | Jump height of the DoubleJump Input Event. |
V2 exclusive - LandingRoll
![]() | UseLandingRoll | Allows Landing Roll if checked. - If landing roll condition is checked, the character will roll if the vertical velocity exceeded 18 units. Upon Landing, if there is Horizontal Input, the landing roll motion wil be triggered. |
V2 exclusive - LandingRoll | LandingRoll Speed | Movement Speed of the LandingRoll Event. |
V2 exclusive - MoveTurn
![]() | UseMoveTurn | Allows MoveTurn if checked. - When enabled, the instantaneous (0.1 sec Interval) rotation angle of the character is greater than 90 degrees. |
V1, V2 Similarities | Walk / Run Threshold | Walk/Run reference value (0-1) applied, for moving input - (V1/V2) Run Threshold : Reference value used to switch to Walk → Run motion - (V2) Walk Threshold : Maximum reference value to which the acceleration of the walk motion is applied |
V1, V2 Similarities | FloatingUI(onApp) | When playing through the app, you can choose whether to expose the UI related to the character. - MiniProfile: When clicking on a character, whether to expose the mini profile pop-up UI - NickName (Me): Whether to expose my character nickname UI - NickName (Others): Whether to expose other characters' nickname UI - BubbleChat (Me): Whether to expose my character's Bubble Chat UI - BubbleChat (Others): Whether to expose other characters' Bubble Chat UI |