cocos creator开发攀爬类游戏

最近使用cocos creator制作了一个攀登楼梯的游戏,使用到了cocos creator 的碰撞系统,动画系统,还使用了骨骼动画。

这个游戏本身是一个3d游戏,使用2d引擎表现出来的效果自然比不上3d,一开始是要考虑上线微信小程序,所以选了creator引擎。

游戏的核心玩法就是人物向上攀登,点击抓到木头就可以继续向上抓,否则就会掉下,落入水中游戏结束。就是很简单的碰撞检测,不过动画的表现,我需要把手单独的抠出来,一开始使用帧动画的时候,没办法碰撞检测,我使用了一个比较笨的方法,就是在帧动画的每一帧结束后发射一个事件,带给程序一个参数,我把每一帧对应的手的位置全部记录在一个数组中,然后根据帧动画传过来的参数设定左右手的位置,达到了预期的效果。

首先在creator的动画系统中给每一帧添加帧事件,选中帧,点击播放帧动画右边的那个箭头可以添加帧事件,添加成功后帧上会出现一个白点。

双击白块可以给帧事件添加函数并附带参数,参数可以是number,string,boolean三种类型。如下图,每一帧可以添加很多个函数回调。写完之后点击保存。

然后在绑定改动画节点上添加一个脚本组件,在脚本中添加这个函数名,就能监听到回调。注意:只能在当前动画节点绑定的脚本组件上监听到。如果有参数可以带过来。

//帧动画的回调

onTextureChange(event){

     let self = this;

},

帧事件是在添加帧事件的那一帧播放完成后才调用,所以对位置的话,要注意不要错帧。

这样就把手单独的拿了出来,我可以以一个节点的形式去操作手掌,对手添加碰撞区域,改变手的spriteFrame属性。然后就是对手和木头的碰撞开启监听。

因为是要用户点击才能够抓住木块,所以在碰撞检测里边的操作就是,监听每个木块的onCollisionStay,保存一个全局布尔变量,在点击的start和end中做操作,start时设为true,end时设为false。这样就做到了在点击的时候才会真正处理碰撞。点击到了,也要将该布尔变量设为false,不然会连续进入处理很多次。

以上关于爬行碰撞的就处理完了。然后就是场景的移动,我一开始使用的是人物不动,背景移动,不过这样子看起来十分突兀。后边选择了摄像机。一开始是摄像机放在人物身上,可是移动还是很突兀,后边把摄像机拿了出来,人物移动后,摄像机跟随移动,就解决了这个问题。

后边因为帧动画资源占用太多选择了骨骼动画,在骨骼动画中,依然是把手单独的抠出来,监听骨骼动画每帧的回调。将骨骼动画拖入游戏场景中设定好位置,然后在代码里取到该节点,hero_spine:sp.Skeleton,

注意:骨骼动画的是不能设置锚点和size的,不过可以设置位置。

骨骼动画每帧的监听方法是

self.hero_spine.setEventListener(function(event){   });

self.hero_spine.setEndListener()  骨骼动画这个方法,在浏览器中会在动画播放完成调用,但是在模拟器和真机中,会直接调用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值