ZEPETO角色
ZEPETO角色是用于在世界场景中加载的基本ZEPETO角色实例单元。
要控制ZepetoCharacter,请将以下导入语句添加到脚本中。
此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值。
- 用户ID : 这是一个唯一的ID值,用于区分ZEPETO系统中的用户,并不是在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 中播放的动画过渡可以根据 Motion V2 的 CharacterState 开启/关闭。 - true : 关闭受控制器输入影响的 ZepetoCharacter.CurrentState,并控制所需的动画剪辑。 |
👍 使用 constraintStateAnimation 的示例
- 您希望角色使用游泳动画而不是行走动画。您可以将游泳动画剪辑应用于新状态,并通过 constraintStateAnimation 固定该状态。
- 如果您希望在移动角色时使用手势动画,可以将手势动画剪辑应用于新状态,并使用 constraintStateAnimation 通过固定状态移动角色。
- 当您希望强制播放特定动画,同时暂时忽略应用于 Animator 状态的参数值时,可以使用此功能。
UnityEngine Animator 函数以 ZepetoAnimator 的形式提供。
例如,如果您想为特定角色动画器的 "状态" 参数设置一个整数值,可以使用:
有关更详细的用法,请参考 UnityEngine Animator 文档和下面的示例脚本。
📘 UnityEngine Animator https://docs.unity3d.com/ScriptReference/Animator.html
一个由玩家控制的本地玩家 ZEPETO 角色的动画控制示例。
如果您运行示例,您会看到当StateMachine.constraintStateAnimation的值为True时,CharacterStateMachine中播放的动画过渡为Off。
如果您将StateMachine.constraintStateAnimation的值设置为False,它将返回到其原始状态。
从ZEPETO.CharacterController包的版本1.11.3开始,添加了一个接口以访问ZepetoCharacter Shadow对象。
API 规范:
target | - 表示作为调整 CharacterShadow 对象变换的参考对象。 - 默认情况下,ZEPETO 角色被设置为目标。CharacterShadow 对象的变换基于指定角色的底部进行调整。 |
---|---|
autoSyncTransform | - 一个标志值,用于确定是否调整阴影的位置。 - 默认值为 true。 |
通过这个,您可以在运行时控制 Zepeto 角色的阴影。下面是一个使用切换开关来打开和关闭阴影的示例代码。