当前位置: 首页 > news >正文

Unity - Spine

spine运行库导入

spine官方地址:http://zh.esotericsoftware.com/

spine-unity unitypackage下载路径spine-unity 下载

下载好后拖入unity资源即可,他为我们提供了官方api以及一些示例文件

spine骨骼动画使用

Spine 导出的 Unity 资源

Spine 导出的资源有 3 个文件

.json 存储了骨骼信息

.png 使用的图片图集

.atlas.txt 图片在图集中的位置信息

当我们把这三个资源导入到已经引入了 Spine 运行库的 Unity 工程后

会自动为我们生成

_Atlas 材质和.atlas.txt 文件的引用配置文件

Material 材质文件

SkeletonData json 和Atlas 资源的引用配置文件

使用Spine导出的骨骼动画

1.直接将_SkeletonData文件 拖入到场景

选择创建SkeletonAnimation对象

2.创建空对象 然后手动添加脚本进行关联

spine骨骼动画代码控制

SkeletonData JSON: 骨骼数据文件

Scale: 缩放大小

Skeleton Data Modifiers: 骨骼数据修改器

Blend Mode Materizls: 混合模式材质

Apply Additive Material: 是否使用叠加材质

Additive Materials: 叠加材质

Multiply Materials: 相乘材质

Screen Materials: 屏幕材质

Atlas Assets: 图集资源

Mix Settings: 混合设置

         Animation State Data: 动画状态数据

        Default Mix Duration: 默认混合持续时间

        Add Custom Mix: 添加自定义混合(可以指定某两个动画之间的持续时间)

Animations: 动画

Setup Pose: 设置姿势(还原到默认姿势)

Create Animation Reference Assets: 创建动画参考资源

Slots: 插槽相关(一个部位有多张图片构成,可以在这预览)

SkeletonMecanim: 骨骼机制

Controller: 关联动画控制器

SkeletonMecanim 是 SkeletonAnimation 的替代品,它不是必须的

SkeletonData Asset: 关联的骨骼动画信息

Animation Name:当前播放的动画名

Loop:是否循环

Initial Skin:初始蒙皮

                美术在制作时可能有几套蒙皮

                一般情况下只有一套 不需要修改

Time Scale:时间缩放,值越大动画播放的越快

Root Motion:是否添加根运动的脚本

                一般情况下不添加

将_SkeletonData文件拖入场景并选择SkeletonMecanim的话就可以通过状态机控制动画

代码控制
using Spine;
using Spine.Unity;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class lesson13 : MonoBehaviour
{private SkeletonAnimation sa;private float x;private float y;private int temp = 0;[SpineAnimation]public string jumpName;[SpineBone]public string boneName;[SpineSlot]public string slotName;[SpineAttachment]public string attachmentName;// Start is called before the first frame updatevoid Start(){sa = GetComponent<SkeletonAnimation>();//动画播放//方法一:直接改变SkeletonAnimation中的参数//sa.loop = true;//sa.AnimationName = "jump";//方法二:使用SkeletonAnimation中动画状态改变的函数//sa.AnimationState.SetAnimation(0,"jump", false);//排队播放//sa.AnimationState.AddAnimation(0,"walk",true,1.6f);//转向//sa.skeleton.scaleX = -1;//动画事件//动画开始播放//sa.AnimationState.Start += (t) => {//    print("动画开始播放");//};//动画被中断或者清除//sa.AnimationState.Start += (t) => {//    print("动画被中断或者清除");//};//动画完成播放//sa.AnimationState.Start += (t) => {//    print("动画完成播放");//};//作动画时添加的自定义事件//sa.AnimationState.Event += (t, e) => {//    print("作动画时添加的自定义事件");//};//便捷特性//动画特性//[SpineAnimation]//骨骼特性//[SpineBone]//插槽特性//[SpineSlot]//附件特性//[SpineAttachment]//获取骨骼,设置插槽附件//获取骨骼//Bone bone = sa.skeleton.FindBone(boneName);//设置插槽附件//sa.skeleton.SetAttachment(slotName,attachmentName);}// Update is called once per framevoid Update(){if (Input.GetKeyDown(KeyCode.Space)){gameObject.transform.Translate(Vector2.up * 5 * Time.deltaTime);temp = 1;if (sa.AnimationName != "jump"){sa.AnimationState.SetAnimation(0, "jump", true);}sa.AnimationState.Complete += (t) =>{if (t.Animation.Name == "jump"){temp = 0;}};}x = Input.GetAxis("Horizontal");if (x > 0){ //转向sa.skeleton.ScaleX = 1;if (sa.AnimationName != "walk"){sa.AnimationState.SetAnimation(0, "walk", true);}}if (x < 0){ sa.skeleton.ScaleX = -1;if (sa.AnimationName != "walk"){sa.AnimationState.SetAnimation(0, "walk", true);}}if (x == 0 && temp == 0){if (sa.AnimationName != "roar"){sa.AnimationState.SetAnimation(0, "roar", true);}}gameObject.transform.Translate(Vector2.right * x * 5 * Time.deltaTime);}
}
http://www.dtcms.com/a/403608.html

相关文章:

  • Spring依赖注入方式
  • 宏升温岭网站建设扁平化网站源码
  • 网站页面架构图网站定制开发 广州
  • 做html网站搜索框代码网站关键词如何做优化
  • Java 中配置 Selenium UI 自动化测试 并生成 Cucumber 报告
  • SAP中BAPI_MATERIAL_SAVEDATA分析和使用
  • 云手机能否稳定的运行传奇游戏
  • 做网站应该先从什么地方开始西宁seo快速排名
  • Tomcat 相关漏洞扫描器(二)
  • PyTorch张量切片的陷阱:视图与副本
  • 旅游酒店网站建设零基础可以学平面设计吗
  • 哪里学网站开发店铺设计图片
  • 小淇云库-Docker 新手入门:容器创建、镜像打包与数据卷管理基础
  • Docker 部署 Ollama 详细教程以及镜像高速下载地址
  • Rust数组与向量
  • 【LeetCode 每日一题】1886. 判断矩阵经轮转后是否一致
  • linux下进程coredump分析
  • 【数据结构学习篇】--栈和stack
  • 钻研视频——破细节
  • 网站建设哪家某网站项目策划书
  • 网站建设制作设计公司佛山内蒙网站建设赫伟创意星空科技
  • 上海网站seo策划设计工具
  • 声明式事务6
  • 南京建设网站公司做车品的网站
  • Next.js动态路由介绍([projectId]/page.tsx:动态路由参数、参数占位符、动态参数、动态数据)无需预创建目录、共享页面逻辑
  • Java核心之泛型
  • 直播进入“智”时代!智享 AI 驱动个性化内容,升级高效互动场景
  • 河南襄县做网站的公司查企业官网
  • Linux:fork()函数详解:原理、用法及经典面试题解析
  • tensorflow卷积层1——卷积和池化