腾云驾雾
到目前为止,我们已经做出了阻止英雄通过墙的效果。很有趣,不是吗?许多游戏还有一类叫做“云”的方块,角色门可以左右穿行他们,甚至可以从下面跳上去, 但是当下落的时候,他们确是不可通行的,英雄会停在上面。看这个例子:
你看到区别了吧?让我们来看看图。 这个是普通的砖墙方块,英雄不能从任何角度穿过它:
再来看云。除了上面,英雄可以从任何方向穿过。 如果英雄从上面掉下来,我们让他停在上面。
首先我们要做一些带有“cloud”属性的方块, 如果cloud属性是true,这个方块就是一块“云”。定义:
game.Tile4 = function () {}; game.Tile4.prototype.walkable = true; game.Tile4.prototype.cloud = true; game.Tile4.prototype.frame = 4;
它的walkable属性是true,意味着英雄可以穿行过去。 为了让英雄能站到上面,我们需要创建新的函数。
function checkIfOnCloud (ob) { var leftcloud = game["t_" + ob.downY + "_" + ob.leftX].cloud; var rightcloud = game["t_" + ob.downY + "_" + ob.rightX].cloud; if ((leftcloud or rightcloud) and ob.ytile != ob.downY) { return(true); } else { return(false); } }
我们检测英雄的左下角和右下角的方块是不是云,只要有一块是,就返回true。否则返回false。
现在我们需要在两个地方调用这个函数: moveChar函数中往下运动的时候,还有fall函数中检测英雄是不是继续下落的时候。
在moveChar函数中if (diry == 1)的后面原来有这句:
if (ob.downleft and ob.downright) { ...
改成这样,加上云的检测:
if (ob.downleft and ob.downright and !checkIfOnCloud (ob)) { ...
在fall函数中也一样,把这个:
if (ob.downleft and ob.downright) { ...
换成:
if (ob.downleft and ob.downright and !checkIfOnCloud (ob)) { ...
只有左下方和右下方都可通行,而且下面的不是云,英雄才能往下掉。
enjoy :)
下载源文件
出处:蓝色理想
责任编辑:qhwa
上一页 跳跃 下一页 梯子
◎进入论坛Flash专栏版块参加讨论
|