Flash 游戏制作教程 <三>

Tile Based Games 3

 

 by TONYPY 翻译: jackgun_at_126.com

 

主角 ( The Hero )

 

没有什么游戏没有英雄(主角)。英雄专们拯救世界或者是公主什么的,同时打击坏蛋们。我们的游戏也会有英雄(主角)
他也将拯救世界,他是 007 他……在这:

 

这英雄只是个红色的方块 :) 怎么,它看起来不够强大?你可以把它画成你喜欢的样子嘛。它在组件库里 movie clip 名称和联接的名称都是 "char" . 当然要注意你不能把主角做得比地图上的一块砖更大。

 

同时要注意的是,无论你的主角是什么样子的,它的 movie clip 的注册点应该放在正中心的位置。而砖块的注册点位置则要放到左上角,如下图:

 

 

来一些代码?把下面这行放到声明砖块语句的后面吧:

 

char={xtile:2, ytile:1};

 

这行只是声明一个新的 "char" 对象。这个 char 对象我们暂时还没有设定它的其它属性,诸如它怎么移动、怎么感觉、什么是它的食物等等。

 

现在我们先给 char 对象两个属性 xtile ytile,用来告诉我们主角现在站的位置。当主角移动的时候我们就更新 xtile ytile 属性以及主角脚下的砖的属性。 例如上面的实例中: xtile=2 ytile=1 时,主角站在名为 "t_1_2" 的砖上面。你看到主角是站在左上角左起第三格、上面数下来第二格。应为我们所有的砖块是从 0 开始计算的,所以主角所站的砖是 “t_1_2”

 

后面,我们还要给主角增加更多的属性。

 

我们先把主角放到舞台上面,把下面的代码加到 buildMap function 的循环后面:

 

game.clip.attachMovie("char", "char", 10000);

 

char.clip = game.clip.char;

 

char.x = (char.xtile * game.tileW)+game.tileW/2;

 

char.y = (char.ytile * game.tileH)+game.tileH/2;

 

char.width = char.clip._width/2;

 

char.height = char.clip._height/2;

 

char.clip._x = char.x;

 

char.clip._y = char.y;

 

    第一行将主角的 movie clip 从组件库里复制到 game.clip ( 还记得上一章我们将 _root.tiles 绑到 game.clip 了吗?) 并起名为 "char"

 

    然后我们将这个 char 对象的路径存放在它自身的 clip 变量中。这样,我们随时要使用这个movie clip 时,无论这个 movie clip 被移到什么地方我们都可以简单地使用 char.clip 变量来取得这个 movie clip 的完整路径 _root.tiles.char 了。

 

    下面我们将计算 char 对象两个属性: x y 你也许会奇怪,我们要这么多属性干嘛,我们不是已经有了xtile ytile 了吗?记住,xtile ytile 只是用来计算砖块位置,而 x/y 属性是用来存放 char movie clip 的实际舞台坐标。这两个属性主要用来调整主角的位置,比如说当它碰到了障碍、受到攻击、掉下等等时候,我们就要以很容易得改变它的 _x/_y 属性了。

 

    我们利用主角所在的砖位置属性xtile ytile 来计算主角的实际坐标位置,实际的坐标 x 的位置等于 xtile 值乘以砖块的宽度,再加上一块砖的一半。例如砖块宽为 10 ,要将主角放到第二块砖上面 (xtile=1),那么主角的 x 值应为 1*10+10/2 。所以, x 值公式为:(char.xtile * game.tileW)+game.tileW/2

 

    下一步我们存放主角 movie clip 宽和高的一半到 char 对象里面。这两个属性将会非常有用,在主角与砖块、敌人发生碰撞的时候,它们可以用来计算主角的边界。特别是我们自己设计主角的时候,主角身上的某些部分是不在碰撞范围内的,如主角的头发。

 

最后两行把 char movie clip char.clip 放到我们计算好的 x y 坐标上。

 

你可以点这里下载本章的 fla 源文件。

 

下一章: 移动与控制

 




文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: Flash 游戏 制作 教程
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.