这是我第一次接触Cocos Cretor,博主之前学的是Unity3D开发,由于U3D的工作不怎么好找所以博主打算转2D。这也是我学Cocos Creator的第二天就面试上的公司,也是我的第一个项目。写的不好的地方希望大家多多包涵。
这个游戏是“最强灌篮大作战”,由于之前没写过类似的游戏,所以在我接触到这个项目时感觉亚历山大。不过在我每天加班加点的学习过程中,程序已经渐渐成型。虽然在很多的地方稍有不足。
第一步,先创建一个Cocos Cretor的项目,如图:
第二步,按照程序的设计样板,编辑相应的界面。
这里简单说一下,此类游戏的重点,是设置它的物理,碰撞等系统。在这个游戏里,博主为了防止篮球被弹出屏幕,楼主把游戏界面做成了盒子。
盒子的组成属性如上图,添加方法:点击添加组件=>物理=>Collider =>box。
即可完成所有盒子的添加。
第三步,物理组建的添加怎么可能少了篮球呢。篮球的物理大部分和盒子的物理类似,只是部分数据不同。请看图。
哦对了,物理和碰撞系统默认情况下是关闭的。所以如果要使用首先得开启物理系统和碰撞系统。
Game.js: onLoad()
这里还要补充一点的是设置蓝板框,因为大部分的物理检测都是在蓝板上
如图,在篮板上我添加了四个物理碰撞,首先是蓝板(防止球穿过篮板),其次是在进球的筐,让球能够从两个物理点进球(也是为了防止篮球穿过球筐),第四个点是用来检测球是否进筐。当球与该点接触,即进球。计分器加一。接触判断需要添加组。
第四步,物理设置好了接下来就是控制篮球的方向,及点击跳动了。我这里就直接粘贴代码了。我把触摸写在了Canvas上也就是Game脚本上。然后调用控制Player节点。
Game.js
cc.Class({
extends: cc.Component,
properties: {
//player 节点,用于获取主角弹跳的高度,控制主角行动
player: {
default: null,
type: cc.Node
},
//更新分数的Label
ScoreLabel: {
default: null,
type: cc.Label
},
},
onLoad () {
//开启冲力,感觉没啥用
cc.director.getPhysicsManager().enabled = true;
cc.director.getPhysicsManager().debugDrawFlags = cc.PhysicsManager.DrawBits.e_aabbBit |
// cc.PhysicsManager.DrawBits.e_pairBit |
// cc.PhysicsManager.DrawBits.e_centerOfMassBit |
cc.PhysicsManager.DrawBits.e_jointBit |
cc.PhysicsManager.DrawBits.e_shapeBit;
cc.director.getPhysicsManager().debugDrawFlags = 0;
/*==========================开启碰撞检测系统==========================*/
var manager = cc.director.getCollisionManager();
manager.enabled = true;
/*==========================开启物理碰撞==========================*/
this.physicsManager = cc.director.getPhysicsManager();
this.physicsManager.enabled = true;
/*==========================触摸监听==========================*/
this.node.on(cc.Node.EventType.TOUCH_START,function(touch){
//角色绑定控件
var hero = this.player.getComponent("Player");
//实现onTouchBegan事件回调函数
cc.log(touch)
var touchLocX = touch.getLocation().x;
if(touchLocX < cc.winSize.width/2) {
hero.node.runAction(hero.setJumpRightUpAction());//精灵跳跃
}
else if (touchLocX > cc.winSize.width/2) {
hero.node.runAction(hero.setJumpLeftUpAction());//精灵跳跃
}
cc.log("touchLocX: " + touchLocX );
//hero.node.runAction(hero.setJumpUpAction());//精灵跳跃
}, this);
},
/*=================================================================Update=================================================================*/
update