- 第1章 简介
- 第2章 步骤1 – 精灵动画
- 第3章 步骤2 – 对象模型
- 第4章 步骤3 – 游戏逻辑与控制
- 第5章 步骤4 – 杂七杂八
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
3.3 玩家对象
玩家就是只有一个实例的简单类(因为这是个单人游戏嘛),所以在这里使用面向对象只会使得代码更易阅读。
在玩家对象中,我们需要有属性来描述玩家飞船状态,例如飞船是否还有护盾、还有命?同时,飞船的基本动作可以通过对象方法实现。因为在这个游戏里,我们不需要物理引擎来管理飞船移动,你仅仅只需增加/减少位置,我选择不使用任何方法来管理飞船的移动。
第一个方法 damage(),用来判断 损伤
事件。当导弹击中飞船时,我们调用这个方法,并根据返回值判断飞船是否该 死
了。对外界来说,这个方法屏蔽了对护盾的管理。如果你想知道 variabl--含义,它代表 variable = variable – 1,这也适用于其他操作符。
function Player(node){
this.node = node;
//this.animations = animations;
this.grace = false;
this.replay = 3;
this.shield = 3;
this.respawnTime = -1;
// This function damage the ship and return true if this cause the ship to die
this.damage = function(){
if(!this.grace){
this.shield--;
if (this.shield == 0){
return true;
}
return false;
}
return false;
};
//...
第二个方法叫做 resoawn(),它所关注的是当飞船死亡(之间的 damage() 方法返回 true),而且玩家仍然有剩余的 生命
时所发生的事。在这种情形下,飞船护盾必须重新生成,并且飞船会处于敌人无法攻击到的无敌(grace)模式。无敌模式只能持续 3 秒钟,我们需要测定时间以便得知何时该启动无敌模式,何时该关闭无敌模式,这就是代码 this.respawnTime = (new Date()).getTime();
所做的事情。
为了让玩家知道飞船正处于无敌(grace)模式,我们使飞船变得稍微透明,jQuery 的 fadeTo()
方法可以实现。这个方法的第一个参数是变成指定透明度所花费的时间(这里因为是即使生效所以 0ms),第二个参数是我们想要得到的透明度(1 代表完全不透明,0 代表不可见)。
//...
// this try to respawn the ship after a death and return true if the game is over
this.respawn = function(){
this.replay--;
if(this.replay==0){
return true;
}
this.grace = true;
this.shield = 3;
this.respawnTime = (new Date()).getTime();
$(this.node).fadeTo(0, 0.5);
return false;
};
//...
玩家类的最后部分是检测无敌模式是否结束。这个方法必须在每个时隙都被调用。、
//...
this.update = function(){
if((this.respawnTime > 0) && (((new Date()).getTime()-this.respawnTime) > 3000)){
this.grace = false;
$(this.node).fadeTo(0, 1);
this.respawnTime = -1;
}
}
return true;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论