版权声明:本博客属个人原创,转载请注明。 https://blog.csdn.net/qq_33198758/article/details/82261034
1. 分数显示
拖动一个Label到gamescence中,如图1,调整合适位置。设置Label的初始文字为Score:0。
给Game脚本添加一个scoreDisplay的Label属性,并且绑定上述Label。
// score label 的引用
scoreDisplay: {
default: null,
type: cc.Label
},
2. 分数更新
给Game脚本添加如下函数,得分时调用。
gainScore: function () {
var scene = cc.director.getScene();
this.score += 1;
// 更新 scoreDisplay Label 的文字
this.scoreDisplay.string = 'Score: ' + this.score.toString();
},
3. 得分逻辑
采用碰撞的方式添加得分逻辑。当障碍物到达主角同一高度,若两者极性相同,得分加一。具体方法为:
第一步:
给gamescence场景的canvas添加一个BoxCollider组件,如图1所示位置,Tag设置为1,属于window组。位置和主角的位置处于同一Height。之前设置过window和MagnetObstacle碰撞组,所以当障碍物越过主角时就会触发碰撞。
第二步:
碰撞监听在上一节已经注册。再继续添加碰撞处理函数,根据Tag判断碰撞位置。
NMagnetObstacle脚本中:
onCollisionEnter: function(other,self){
if(other.tag === 1){
if(this.game.N){//同为N极,得分加一
this.game.gainScore();//调用Game脚本的得分函数
}
}
},
SMagnetObstacle脚本中:
onCollisionEnter: function(other,self){
if(other.tag === 1){
if(this.game.N){//同为S极,得分加一
//this.game.gainScore();
}
else{
this.game.gainScore();//调用Game脚本中的得分函数
}
}
},