在使用cocos Creator 制作的RPG游戏的时候会有很多与之前不同的地方,在游戏中需要点击人物移动并且在移动的过程中播放逐帧动画,首先是制作逐帧动画, 在制作动画的时候需要注意的就是先在一个空的节点上面添加一个sprite 组件,然后在这个节点上面制作动画,等动画制作完成之后删除这个空的节点就可以了,得到逐帧动画的文件之后,就可以通过代码实现一些我们想要实现的功能,比如点击屏幕就播放某一个动画,就是在一个节点上面添加点击的事件,当点击之后就运用代码执行动作代码如下:
_buildPlayerPb:function(Player){
var that = this
this.bg.on(cc.Node.EventType.TOUCH_START,function(event){
that._talkPersonOb = null;
var localTouchPo = that.npcLayer.convertToNodeSpaceAR(event.getLocation())
that._moveToPosition(localTouchPo,Player)
})
},
pub_runToNpc:function(npcOb,Players){
this._talkPersonOb = npcOb
this._moveToPosition(npcOb.position,Players)
},
_moveToPosition:function(localTouchPo,Player){
var that = this
var turnRight = localTouchPo.x < Player.x
that._playerPlayAction("playerRun",turnRight,Player)
var move = cc.moveTo(cc.pDistance(localTouchPo,
Player.getPosition())/that._playerRunSpeed, localTouchPo)
Player.stopAllActions()
Player.runAction(cc.sequence(move, cc.callFunc(function(){
that._playerPlayAction("playerStand",false,Player)
if(that._talkPersonOb){
cc.find('UIScript').getComponent('talkPanelControl').pub_showTalkInfo(that._talkPersonOb)
that._talkPersonOb = null
}
})))
},
_playerPlayAction:function (name, turnRight,Player) {
var anim = Player.getChildByName("anim").getComponent(cc.Animation)
Player.getChildByName("anim").scaleX = turnRight?-1:1;
if(name == 'playerRun' && anim.currentClip && anim.currentClip.name == 'playerRun'){
return
}
anim.play(name)
},
这里一共封装了两个方法,一个是人物移动的方法。一个是播放动画的方法。在点击的时候调用人物移动的方法,在人物移动的时候就调用播放动画的方法。重点就是在这个游戏中我们在控制人物移动的脚本里面开发了一个接口,给背景的节点拖了进来。所以我们每次点击的是背景上的点 ,但是背景上的坐标跟人物的坐标不是在同一个坐标系。所以在使用点击的坐标移动的时候,就必须要给点击的全局坐标转换成人物的局部坐标。才能使用。