第五步,score得分的文字提示动画部分全部完成了。但是至此,还不能称得上是一个华丽的效果,为了实现这个效果,官方为我们提供了爆炸动画素材,就是fx文件夹里面的图片。

我们要用它们实现一个华丽的爆炸特效。
<1>首先在animRoot下面创建一个空节点:pop,用来承载我们的爆炸动画。接着添加Sprite组件,用来装载动画文件。

<2>接着打开动画编辑器,选中pop节点,添加cc.Sprite.spriteFrame属性

<3>在0秒处,插入关键帧,把首张爆炸图fx_coinxiaosh_00拖入Sprite组件的Sprite Frame属性。

<4> 我们用同样的方法,在0.03秒处插入关键帧,把fx_coinxiaosh_01文件拖到Sprite Frame;在0.04秒处插入关键帧,把fx_coinxiaosh_02文件拖到Sprite Frame;在0.05秒处插入关键帧,把fx_coinxiaosh_03文件拖到Sprite Frame;在0.06秒处插入关键帧,把fx_coinxiaosh_04文件拖到Sprite Frame;在0.07秒处插入关键帧,把fx_coinxiaosh_05文件拖到Sprite Frame;

<5>爆炸动画已经完成了,小伙伴们可以点击播放按钮,预览动画效果。是不是感觉搜的一样,动画就播放完了,完全没看清楚,如果想要动画播放慢一点,我们只需要修改Sample值,把60改成25试试。最后爆炸播放完了,当然也要隐藏起来,所以,我们又要用到透明度opacity属性,把动画设置为完全透明。我们在爆炸动画播完的下一帧,也就是0.08秒处,插入opactity属性第一帧,此时opacity值默认是255。然后再0.10秒处,插入第二帧,设置opactity值为0,让pop节点完全透明。

第六步,动画完成了,我们现在把动画特效变成预制资源供后续使用。

第七步,我们回到game场景,双击资源管理中的game文件,此时提示:Untitled 场景已经修改,是否保存?因为是用来制作动画特效的临时场景,因此我们选择:不要保存。现在如何使用刚刚制作的华丽爆炸动画特效,需要配置一个简单的播放脚本,首先再资源管理器中双击刚刚创建的动画预制资源文件:scoreFX,把资源管理器中的ScoreFX脚本拖到层级管理scoreFX节点,然后把AnimRoot节点拖到scoreFX属性的anim窗口。最后依次点击场景编辑器中的保存按钮和关闭按钮。

`ScoreFX.js
【
cc.Class({
extends: cc.Component,
properties: {
anim: {
default: null,
type: cc.Animation
}
},
play(){
this.anim.play('score_pop');
}
});
】
第八步,打开Game.js脚本,在gainScore方法中添加如下,这样当收集到星星的时候,就会出现华丽的爆炸特效咯。
`
7.为触屏设备加入输入控制
思路:现在触摸屏手机是主流机型,因此触摸控制游戏是现在大部分游戏的必备功能。现在爆火的全民漂移3d就是一款触摸操作赛车的合成向游戏。因此这段脚本逻辑,小伙伴们完全可以当作标配记下,以后在自己的游戏中使用。

onLoad() {
//禁用节点
this.enabled=false;
this.xSpeed=0;
//添加键盘监听
cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN,this.onKeyDown,this);
cc.systemEvent.on(cc.SystemEvent.EventType.KEY_UP,this.onKeyUp,this);
//初始化触摸事件监听
var touchReceiver = cc.Canvas.instance.node;
touchReceiver.on('touchstart', this.onTouchStart, this);
touchReceiver.on('touchend', this.onTouchEnd, this);
},
//触摸开始
onTouchStart (event) {
//获取触摸点位置
var touchLoc = event.getLocation();
//根据触摸点的x坐标判断位于屏幕左侧还是屏幕右侧
if (touchLoc.x >= cc.winSize.width/2) {
this.accLeft = false;
this.accRight = true;
} else {
this.accLeft = true;
this.accRight = false;
}
},
//触摸结束
onTouchEnd (event) {
this.accLeft = false;
this.accRight = false;
},