首页 > 其他分享 >三种方式,浅谈 Cocos Creator 的动画添加

三种方式,浅谈 Cocos Creator 的动画添加

时间:2024-03-18 13:44:23浏览次数:27  
标签:动画 Cocos anim false 浅谈 Creator cc addAnimation

前言

虽然 Cocos 的官方文档对动画系统做了较详细的介绍,但是对于刚接触的同学(比如我)来说还是不太友好。尽管如此,我就按文档加社区帖子一起实践了一下。为了方便忘记后能快速捡起,所以就用我的方式结合使用场景,简单介绍一下 Cocos Creator 动画添加的三种方式。

属性动画

这个是 Cocos Creator 动画系统自带的一种对节点进行标准位移、旋转、缩放动画操作。可以用来制作一些按钮加亮,引导之类的业务型动画。

1. 创建节点并挂载 “Animation” 组件

添加组件 > 其他组件 > Animation,然后打开动画编辑器,再点击 “新建 Clip 文件”,保存后放在 "assets" 下 "animations",后缀为.anim 的文件

 2. 动画编辑

进入编辑后,找到属性列表,点击 “Add Property”,选择列表的 “position,width,coclor” 等属性,点击右侧菜单按钮,可以插入关键帧,删除关键帧,清空关键帧等,添加一帧就可以在属性检查器对应节点的属性进行调节。

3. 挂载动画剪辑

将已经编辑好的动画剪辑文件 (.anim 后缀),拖入到节点动画组件的 animation-clip 或 Default Clip 中。

4. 脚本控制

创建 ts 文件,将以下代码的脚本挂载到与动画相同的节点上(当然也可以制作预设体)。

const {ccclass, property} = cc._decorator;

@ccclass
export default class NewClass extends cc.Component {

    onl oad () {
		var anim = this.getComponent(cc.Animation);
		// start_btn_dance 动画剪辑名称
		anim.play('start_btn_dance');
	}

    start () {
		
    }

    // update (dt) {}
}

  

序列帧动画

帧动画也是 Cocos Creator 自带的编辑功能,就是在指定时间内循环各种动作或样式的图片,当然前期要准备好序列帧图片放到 assets 下。

1. 创建 Animation 组件和动画剪辑

这部分和上面的属性动画操作一样

 2. 动画编辑

这里在属性列表 Add Property 要选择 “cc.Sprite.spriteFrame”,然后将资源里的序列图片一张一张放入关键帧里。

 3. 脚本控制

如果只是用于播放动画的和上面的也一样,但是动画事件需要分开说一下。

const {ccclass, property} = cc._decorator;

@ccclass
export default class NewClass extends cc.Component {

    onl oad () {
		// 获取当前节点动画组件
		var anim = this.getComponent(cc.Animation);
		// 播放指定动画剪辑
		anim.play('monster');
		
		//this.node.on('onAnimCompleted', this.onAnimCompleted, this);
	}

	// 动画事件,接收两个参数
	onAnimCompleted(num, str) {
		console.log("start anim completed end~");
		console.log(num);
		console.log(str);
        //console.log('onAnimCompleted: param1[%s], param2[%s]', num, string);
        //console.log('onAnimCompleted: this is a test event12345' + num);
    }
}

4. 动画事件

确切的说应该是动画帧事件,就是在指定帧上添加一个事件(可以预留参数),当播放到该帧时触发。当前触发是在脚本里控制,这种一般用来做比如一个角色击杀时,要触发一个大招特效动画等。

 

第三方工具动画

通过第三方的工具制作动画后导入到 Cocos Creator, 官方提供对 Spine 和 DragonBones 的支持。下面以 Spine 为例,从工具内导出,到 Cocos 脚本控制进行演示。

1. Spine 导出

可以直接用工具提供的示例,然后选择导出,注意是 json 格式文件。

 

2. Cocos Creator 导入

将上面从 Spine 导出的三个文件整成一文件夹放入 cocos 项目下 assets 的资源下,然后找到后缀 json 文件拖入层级管理器中。

 3. 脚本控制

因为在 Spine 已经做好了动画,皮肤和帧事件,所以脚本也就是对动画的播放,操作换肤和事件回调等。

const {ccclass, property} = cc._decorator;

@ccclass
export default class NewClass extends cc.Component {

    onl oad () {
        var anim = this.getComponent(sp.Skeleton);

        // 清空动画管道
        //anim.clearTracks();

        // 添加动作
        anim.addAnimation(0, 'run', true, 0);
        /*anim.addAnimation(0, 'walk', false, 0);
        anim.addAnimation(0, 'jump', false, 0);
        anim.addAnimation(0, 'idle', false, 0);
        anim.addAnimation(0, 'head-turn', false, 0);
        anim.addAnimation(0, 'fall', false, 0);
        anim.addAnimation(0, 'crouch', false, 0);
        anim.addAnimation(0, 'attack', false, 0);*/

        // 停止动画
        /*let SpEnt: sp.spine.TrackEntry = anim.setAnimation(0, 'run', false);
        SpEnt.animationStart = SpEnt.animationEnd;*/

        // 换肤
        //anim.setSkin("default");

        // 监听动画开始
        anim.setStartListener(function () {
            console.log("animate start~");
        }.bind(this));

        // 监听动画结束
        anim.setCompleteListener(function () {
            console.log('animater end~');
        }.bind(this));

	}
	
}

  

 

 

标签:动画,Cocos,anim,false,浅谈,Creator,cc,addAnimation
From: https://www.cnblogs.com/zerofc/p/18080221

相关文章

  • Cocos实例1:实现平面游戏中的滚动地图
    Cocos实例:实现平面游戏中的滚动地图1.应用: 在2D游戏或某些UI界面中,会经常遇到一些循环滚动的背景或元素。例如飞机大战的背景、冒险岛的双层循环滚动背景,模拟视觉效果上角色在无限背景地图中运动。2.实现原理 需要一张上下或左右在顺序排列时可以无缝衔接的背景图片,搭......
  • 高可用浅谈
    一什么是高可用,判断标准是神么高可用(HighAvailability)描述的是一个系统在大部分时间都是可用的,可以为我们提供服务的。高可用代表系统即使在发生硬件故障或者系统升级的时候,服务仍然是可用的。一般情况下,我们使用多少个9来评判一个系统的可用性,比如99.9999%就是代表该系统......
  • 后端搞 Cocos 小游戏开发的三点避坑指北
    前言    先说一下我为什么要弄小游戏吧,首先无关工作,也无关兴趣,就只是想在副业里探索一下。没错就是做一个单机的小游戏上架到平台试一下水(薅广告费),不过说实话入局有点晚。    早在2019年的时候,我也折腾过白鹭引擎还弄过小demo,当时上架平台也简单。但是不知道为......
  • 浅谈奇偶校验
    奇校验:"1"的个数为奇数偶校验:"1"的个数为偶数(补充的1位校验码放在前后其实都可以,这里是往后面放)比如001的奇校验0010,偶校验0011比如010的奇校验0100,偶校验0101比如011的奇校验0111,偶校验0110简简单单,但是为什么奇偶校验的码距是2呢?首先需要知道码距是什么定......
  • 浅谈容斥原理在计数中的应用
    基本容斥[ABC066D]11首先如果没有重复的数,答案肯定是\(C_n^k\)。考虑如何加入有重复的数这一性质。不难想到用容斥思想,减去重复的部分。那么考虑那些数列可能会重复:显然如果\(x\)出现了两次并且分别出现在\(y1\),\(y2\),那么重复了的数列中一定不会出现下标在\((y1,y2-1)......
  • 浅谈HTTP 和 HTTPS (中间人问题)
    前言由于之前的文章已经介绍过了HTTP,这篇文章介绍HTTPS相对于HTTP做出的改进开门见山:HTTPS是对HTTP的加强版主要是对一些关键信息进行了加密一.两种加密方式1.对称加密公钥+明文=密文密文+公钥=明文2.非对称加密举个例子就好比小区邮箱提供......
  • 浅谈Java中的String,StringBuffer与StringBuilder
    String,StringBuffer与StringBuilder类是我们比较常用的三个类,弄懂它们也是很重的,下面是我学习之后对这三个类的总结,欢迎评论纠错String类用法:1、String对象用于保存字符串,也就是一组字符序列2、字符串常量(如"Tom")对象是用双引号括起的字符序列。例如:“你好”、“12.2......
  • 浅谈JavaScript
    第一章JavaScript学前准备1.JavaScript简介(1)1992年Nombas的scriptease奠定了JavaScript思想理念;(2)受当时网速的限制,很多操作过程很漫长,如用户注册个账号,先提交到服务器去验证合法性,然后再返回给用户。Netscape发现了这个问题并开发了JavaScript语言,同时微软也开发了一个叫J......
  • 浅谈有向无环图游戏
    以前写的,一直没发。浅谈有向无环图游戏在做题的时候,往往能遇到一些有关博弈论的游戏…公平组合游戏的解释在一般计算机竞赛中,博弈论的题目通常以“公平组合游戏ImpartialCombinatorialGame”的题干呈现给选手。所谓的公平组合游戏,定义如下:游戏有且仅有两个玩家,且游戏规......
  • 浅谈非内存对抗类和AI自瞄类FPS作弊程序原理及常用反反作弊措施与反作弊应对手段(上)
    一、引言    闲来无事,在浏览微信公众号的时候无意刷到了江西余江警方关于破获全国首例“AI自瞄”类外挂的案件,涉案金额达到惊人的3000余万。不得不感叹近年来AI相关科技发展之迅速及国内有关于FPS类及其他大类游戏作弊的黑产市场之大。    在工作学习之余,......