---
title: 如何应用自定义动画
slug: world-sdk-guide-ch/mPRap1Hpsmw0yPQ6S98yp
docTags: 
createdAt: 2024-09-02T08:34:13.135Z
---

让我们学习如何导入外部动画文件并将其应用于ZEPETO角色。

## 步骤 1 : 设置动画

访问您想要下载动画的网站。
本指南是使用Mixamo网站的示例。

:::hint{type="info"}
**📘 Mixamo**

[https://www.mixamo.com/](https://www.mixamo.com/)
:::



点击所需的人形动画。


![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-Kdv5dUQnLhGwEBEGy2QrS-20240904-102415.png)

下载动画并选择“FBX for Unity (.fbx)”选项。




![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-x0s--QNTC5tCmLVrKGkB0-20240904-102415.png)

将下载的文件拖放到Unity项目面板中。




![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-AvIB5VKV756ZABBJuLJMy-20240904-102415.png)

点击Rig选项卡并将动画类型更改为Humanoid。




::Image[]{src="https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-eiAQhUSYAyCJzuhBoAaWY-20240904-102416.png" size="64" width="397" height="292" position="center" showCaption="false"}

:::hint{type="danger"}
**❗️ 注意**

没有人形设置，它将与ZEPETO角色不兼容。
确保进行设置。
:::



将动画 > 动作 > 根运动节点选项更改为\<根变换>，以使角色的动画更平滑、更真实。



::Image[]{src="https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-1RwYLA2iCS68RneiSUA8B-20240904-102416.png" size="86" width="466" height="1098" position="center" showCaption="false"}

:::hint{type="info"}
📘 **Unity选择根运动节点**

[https://docs.unity3d.com/560/Documentation/Manual/AnimationRootMotionNodeOnImportedClips.html](https://docs.unity3d.com/560/Documentation/Manual/AnimationRootMotionNodeOnImportedClips.html)
:::

## 步骤2：设置动画器

克隆与ZepetoPlayers组件检查器中的动画器变量相关联的动画器对象。

- 文件路径：Packages/zepeto.character.controller/Runtime/\_Resources/AnimatorController/ZepetoAnimatorV2.controller
- 将动画器拖入Assets文件夹。
- 复制后，将其重命名为ZepetoAnimatorV2\_Custom。


  ![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-5LWxc0ZhjEip2Iv2Jm3WW-20240904-102416.png)



点击层级 > ZEPETO > ZepetoPlayers 来创建它，并将您在 ZepetoPlayers 组件的动画控制器字段中创建的动画师拖动到这里。




![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N--_0qoi-16BEq8dfZapGlC-20240904-102416.png)

双击 ZepetoAnimatorV2\_Custom 打开动画师选项卡。

- 将新动画拖放到动画师中以创建动画状态。


  ![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-8n8gaURsgk8TXvVqJUZQ8-20240904-102416.png)


- 右键单击您创建的动画状态，然后单击创建过渡以创建返回到闲置状态的过渡。


  ![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-F02XEpZ2gi4BYCqP10LNl-20240904-102416.png)



![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-xB7pemgHNZaXw0gnou7hb-20240904-102416.png)

## 步骤 3 : 使用自定义动画文件的示例

让我们创建一个示例，展示如何在点击按钮时播放动画。



![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-oTOKTkoLzcUS_spT6Hvu5-20240904-102418.gif)

### 步骤 3-1 : 设置用户界面

- 添加层级 > 用户界面 > 按钮。


  ![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-0hxxDqBK32km_ljZVHQHB-20240904-102416.png)



### 步骤 3-2 : 编写脚本

1. 创建层次结构 > 创建空对象并将其重命名为 CharacterController。
2. 创建项目 > 创建 > ZEPETO > TypeScript 并将其重命名为 CharacterController。
3. 编写如下示例脚本：

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { Button } from 'UnityEngine.UI';
import { Animator, AnimationClip } from 'UnityEngine';
import { SpawnInfo, ZepetoPlayers, LocalPlayer, ZepetoCharacter } from 'ZEPETO.Character.Controller';
import { WorldService } from 'ZEPETO.World';

export default class CharacterController extends ZepetoScriptBehaviour {

    public customAnimationClip: AnimationClip;
    public playCustomAnimationButton: Button;
    private _localPlayerAnimator: Animator;

    Start() {
        this.playCustomAnimationButton.onClick.AddListener(() => {
            this._localPlayerAnimator.Play(this.customAnimationClip.name);
        })

        ZepetoPlayers.instance.CreatePlayerWithUserId(WorldService.userId, new SpawnInfo(), true);

        ZepetoPlayers.instance.OnAddedLocalPlayer.AddListener(() => {
            const player: LocalPlayer = ZepetoPlayers.instance.LocalPlayer;
            this._localPlayerAnimator = player.zepetoPlayer.character.GetComponentInChildren<Animator>();
        });

    }

}
```

- 脚本的流程如下：
  - 开始()
    - 为 playCustomAnimationButton 添加一个监听器，当点击时播放动画。
    - 调用 ZepetoPlayers.instance.CreatePlayerWithUserId() 函数以创建本地玩家。
    - 获取本地玩家的动画组件并将其存储在 localPlayerAnimator 变量中。
- 分配一个设置为自定义动画剪辑的动画剪辑。
- 拖动并将按钮分配给播放自定义动画按钮。


  ![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-7Kzj-j7IacEilseOPmAkC-20240904-102416.png)



6\. 播放并点击按钮以播放动画。

:::hint{type="success"}
**👍&#x20;**&#x5982;果您使用的是除ZEPETO角色以外的自定义角色，

如果是类人角色，您可以应用ZEPETO动画。
:::



