当前位置:嗨网首页>书籍在线阅读

14-敌人

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

9.3.5 敌人

每一个enemy对象都拥有一套与player对象相似的属性。与玩家一样,每一个敌人都是一个对象实例。

以下是在createPlayField()函数中为一个新enemy对象设置属性的代码。

EnemyLocationFound = true;
var tempEnemy = {};
tempEnemy.row = randRow;
tempEnemy.col = randCol;
tempEnemy.nextRow = 0;
tempEnemy.nextCol = 0;
tempEnemy.currentTile = 0;
tempEnemy.rotation = 0;
tempEnemy.x = tempEnemy.col*32;
tempEnemy.y = tempEnemy.row*32;
tempEnemy.speed = 2;
tempEnemy.destinationX = 0;
tempEnemy.destinationY = 0;
tempEnemy.dx = 0;
tempEnemy.dy = 0;
tempEnemy.hit = false;
tempEnemy.dead = false;
tempEnemy.moveComplete = false;
enemy.push(tempEnemy);
items[randRow][randCol] = 1;

在这段代码中,有两点值得读者特别注意之处。第一点,每个enemy对象都有一个moveComplete属性。在游戏状态函数ainimateEnemy()中会用到该属性。当敌人整个部队都移动到新位置之后,游戏将转换到下一个游戏状态。9.3.8节将会详细介绍。

此外还要注意,enemy对象除了加入items多维数组,还会加入enemy数组,保证不会将玩家和目标放入敌人的位置。一旦敌人从初始位置移动,playField数组还有一个道路图片用于显示这个位置。将玩家和敌人称作“可移动对象”区块,因为它们可以在游戏板上移动。当它们移动时,必须在它们移动之前的位置“暴露”出道路图片。

现在,快速看一下目标区块,这样可以加深理解playField区块与可移动对象区块之间的不同。