创造你的世界
玩家和角色:基础

ZEPETO角色

16min

ZEPETO角色是用于在世界场景中加载的基本ZEPETO角色实例单元。

要控制ZepetoCharacter,请将以下导入语句添加到脚本中。

TypeScript




ZepetoCharacter API

此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感兴趣,请参考文档:



创建/删除角色

TypeScript




如果你运行这个示例,你会看到左侧的CharacterModel是没有Animator Controller和Character Controller组件创建的,如下所示。

Document image




控制角色

将通过场景中的角色实例脚本提供一个可以直接控制角色的接口。

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()时,用户的控制输入将再次应用于角色控制。

控制字符示例代码。

TypeScript




如果你运行这个示例,你会看到克隆的角色按以下顺序执行指定的动作。

Document image


📘 请参考以下指南。[创建一个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

运动状态示例代码

TypeScript




控制 ZEPETO 角色动画师

控制 ZEPETO 角色动画师的 API

API

描述

StateMachine.constraintStateAnimation

从 ZEPETO.World 版本 1.6.0 开始,CharacterStateMachine 中播放的动画过渡可以根据 Motion V2 的 CharacterState 开启/关闭。 - true : 关闭受控制器输入影响的 ZepetoCharacter.CurrentState,并控制所需的动画剪辑。

👍 使用 constraintStateAnimation 的示例

  • 您希望角色使用游泳动画而不是行走动画。您可以将游泳动画剪辑应用于新状态,并通过 constraintStateAnimation 固定该状态。
  • 如果您希望在移动角色时使用手势动画,可以将手势动画剪辑应用于新状态,并使用 constraintStateAnimation 通过固定状态移动角色。
  • 当您希望强制播放特定动画,同时暂时忽略应用于 Animator 状态的参数值时,可以使用此功能。



ZepetoAnimator

UnityEngine Animator 函数以 ZepetoAnimator 的形式提供。

例如,如果您想为特定角色动画器的 "状态" 参数设置一个整数值,可以使用:

TypeScript


有关更详细的用法,请参考 UnityEngine Animator 文档和下面的示例脚本。



控制 ZEPETO 角色动画器的示例代码

一个由玩家控制的本地玩家 ZEPETO 角色的动画控制示例。

TypeScript




如果您运行示例,您会看到当StateMachine.constraintStateAnimation的值为True时,CharacterStateMachine中播放的动画过渡为Off。

如果您将StateMachine.constraintStateAnimation的值设置为False,它将返回到其原始状态。

Document image




控制角色阴影

从ZEPETO.CharacterController包的版本1.11.3开始,添加了一个接口以访问ZepetoCharacter Shadow对象。

API 规范:

CharacterShadow 组件接口


target

- 表示作为调整 CharacterShadow 对象变换的参考对象。 - 默认情况下,ZEPETO 角色被设置为目标。CharacterShadow 对象的变换基于指定角色的底部进行调整。

autoSyncTransform

- 一个标志值,用于确定是否调整阴影的位置。 - 默认值为 true。

通过这个,您可以在运行时控制 Zepeto 角色的阴影。下面是一个使用切换开关来打开和关闭阴影的示例代码。

TypeScript




Document image




更新日期 11 Oct 2024
Doc contributor
Doc contributor
此页面是否对您有帮助?