如何使用多种节点使用动画节点本页总览使用动画节点 在游戏开发中,动画是使角色和场景生动起来的重要元素。Dora SSR 引擎提供了一个强大的动画处理节点类——Playable。它是三种动画系统的基础类: Model: Dora SSR 引擎实现的骨骼动画系统。 动画模型通常由一个 .model 文件,一个 .clip 文件和一个 .png 文件组成。 DragonBone: 开源的 DragonBones 动画系统。 动画模型通常由一个以 _ske.json 结尾的文件,一个以 _tex.json 结尾的文件和一个以 _tex.png 结尾的图片文件组成。 Spine: 著名的商业动画软件 Spine2D 的动画系统。 动画模型通常由一个 .json (或是 .skel) 文件,一个 .atlas 文件和一个 .png 文件组成。 本教程将指导您如何在程序中使用各类动画节点,涵盖从加载动画到控制播放的各个方面。 1. 创建动画节点实例 1.1 创建 Model 动画节点 LuaTealTypeScriptYueScriptlocal Model <const> = require("Model")local character = Model("assets/character")local Model <const> = require("Model")local character = Model("assets/character")import { Model } from "Dora";const character = Model("assets/character");_ENV = Doracharacter = Model "assets/character" 1.2 创建 DragonBone 动画节点 LuaTealTypeScriptYueScriptlocal DragonBone <const> = require("DragonBone")local dragon = DragonBone("assets/dragon")local DragonBone <const> = require("DragonBone")local dragon = DragonBone("assets/dragon")import { DragonBone } from "Dora";const dragon = DragonBone("assets/dragon");_ENV = Doradragon = DragonBone "assets/dragon" 1.3 创建 Spine 动画节点 LuaTealTypeScriptYueScriptlocal Spine <const> = require("Spine")local monster = Spine("assets/monster")local Spine <const> = require("Spine")local monster = Spine("assets/monster")import { Spine } from "Dora";const monster = Spine("assets/monster");_ENV = Doramonster = Spine "assets/monster" 2. 创建 Playable 实例 Playable 是一种方便地提供统一动画接口的节点,要使用 Playable 节点来播放动画,首先需要创建其实例。Playable 同时支持三种动画系统的加载和创建,通常使用的加载方式如下: Model 文件:"model:" 前缀 + 不带后缀的模型文件路径。 Spine 文件:"spine:" 前缀 + 不带后缀的 Spine 文件路径。 DragonBones 文件:"bone:" 前缀 + 不带后缀的 DragonBones 文件路径。 2.1 示例:加载 Model 动画 LuaTealTypeScriptYueScriptlocal Playable <const> = require("Playable")-- 加载 Model 动画local modelPath = "model:assets/character"local character = Playable(modelPath)if character then character.position = Vec2(100, 200)else print("加载 Model 动画失败!")endlocal Playable <const> = require("Playable")-- 加载 Model 动画local modelPath = "model:assets/character"local character = Playable(modelPath)if not character is nil then character.position = Vec2(100, 200)else print("加载 Model 动画失败!")endimport { Playable, Vec2 } from "Dora";// 加载 Model 动画const modelPath = "model:assets/character";const character = Playable(modelPath);if (character) { character.position = Vec2(100, 200);} else { print("加载 Model 动画失败!");}_ENV = Dora// 加载 Model 动画modelPath = "model:assets/character"character = Playable modelPathif character character.position = Vec2 100, 200else print "加载 Model 动画失败!" 2.2 示例:加载 Spine 动画 LuaTealTypeScriptYueScriptlocal Playable <const> = require("Playable")-- 加载 Spine 动画local spinePath = "spine:assets/monster"local monster = Playable(spinePath)if monster then monster.position = Vec2(300, 200)else print("加载 Spine 动画失败!")endlocal Playable <const> = require("Playable")-- 加载 Spine 动画local spinePath = "spine:assets/monster"local monster = Playable(spinePath)if not monster is nil then monster.position = Vec2(300, 200)else print("加载 Spine 动画失败!")end