|
>
你看到区别了吧?让我们来看看图。 这个是普通的砖墙方块,英雄不能从任何角度穿过它:

再来看云。除了上面,英雄可以从任何方向穿过。 如果英雄从上面掉下来,我们让他停在上面。

首先我们要做一些带有“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 :)
下载源文件
梯子
在区块游戏中梯子是很常见的一种东西。英雄可以在梯子上爬上爬下(我打赌你不知道:)。当在梯子上按上下方向键的时候,我们会让英雄上下攀爬。
看起来梯子很简单,实际上又很多东西需要考虑。首先,有多少种梯子?

在图中,有4种不同种类的梯子。 梯子A处于一个不可通行的障碍物中。英雄在上面能做什么呢?他可以上下爬,但是不能左右运动,否则就会卡在墙里,那可不好受。
qhwa注: 有些游戏中在这种梯子上是可以左右移下来的,这个功能可以由你自己添加。
梯子B所在的方块是可通行的,而且它的上面还有梯子,所以英雄可以上下爬,也可以左右移动。但是当他左右移动的时候,就该掉下来了。
梯子C下面没有梯子了,英雄只能在它上面向上爬,或者左右移动。
梯子D并不是在所有的游戏中都会出现。有些人认为这种梯子是设计的失误,因为他们不导向任何地方,在空中就断掉了。英雄可以爬上去然后站到梯子上面吗?如果梯子顶部的左右有方块,英雄可以走过去吗?这些都是容易出现分歧的。
这些都是梯子的一些例子,当然还有其他形式的梯子,但是我希望你能看到在开始写代码之前理一下思绪是多么重要。游戏各不相同,可能这里的东西在有的时候很适用,但是可能在别的地方就未必了,只要你每次写代码之前思考一下,不要硬套,就会事半功倍。
规则
让我们列一下关于梯子的规则:
1. 通过上下方向键,英雄可以在梯子上上下移动 2. 当英雄和梯子接触时,他可以爬上去 3. 当英雄和梯子接触,且下方也有梯子时,他可以爬下来 4. 当英雄在梯子上,且左右没有墙时,他可以左右移动 5. 英雄不能在梯子上跳跃
这些应该够了。
请给我一把梯子
梯子是显示在方块的上面的,所以我们要给他做一个独立的影片夹子。这样我们就不用为上面说的不同类型的梯子创建不同的图像了。确定你的梯子mc被导出到as("Export for as"),并且检查链接名是否为"ladder"。

在ladder影片夹子中,画出如上形状的梯子,梯子水平方向在方块的中间。
和其他方块一样,我们也要定义梯子的原型:
g 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >> |