Flash游戏开发系列一:游戏中的敌人(1)
对于目前的 Flash 来说,开发一些像模像样的游戏并不是什么奇怪的事情了。我这里所涉及到的内容和开发游戏有关,但是都是一些比较基本的知识。如果您是游戏开发方面的高手,那么完全可以忽略我这里所描述的内容。我的计划是要做一系列的教程,这是其中一个系列。
游戏是一个交互作品,简单说,就是通过用户的行为,会对这个作品的进程产生一定的影响。说到游戏,总要提到难度,游戏的难度在于:当你想要达到某种目的
的时候,你会发现它的实现多少有些困难,困难越难克服,难度也就越大。不同类型的游戏有不同的难度,以及不同的实现方法。比如:俄罗斯方块通过改变方块下
落的速度来改变游戏的难度,空战射击游戏通过不同的敌机以及不同的 Boss 来实现不同的难度。
在这个系列里面,我们想和大家一起研究一下游戏中敌人的运动方式,一点一点来。AS 基础最好是有一些,不然会稍微有些头疼。
一、最直接的跟踪
首先看看这个例子:
< width="400" height="300" src="http://www.pconline.com.cn/pcedu/sj/wz/flash/0501/flash/18flashgp01.swf" src="http://www.pconline.com.cn/pcedu/sj/wz/flash/0501/flash/18flashgp01.swf" width="400" height="300">
假定红色圆圈是玩家,绿色圆圈是敌人,移动你的鼠标,敌人就会跟着你跑。
这就是最简单的跟踪敌人,它的原理是:
如果(玩家x坐标 <> 敌人x坐标){
调整敌人x坐标,趋近玩家x坐标
}
如果(玩家y坐标 <> 敌人y坐标){
调整敌人y坐标,趋近玩家y坐标
}
这应该是极其容易理解的。那么具体的代码实现应该是什么样子的呢?
我们先把两个不同的 MovieClip 放置在舞台上,一个实例名叫做 player,另外一个叫做 enemy。
为了方便,我们仅仅通过鼠标来实现玩家的移动,于是代码就很简单了:
player._x = _xmouse-10;
player._y = _ymouse-10;
updateAfterEvent();
玩家可以移动了,下面来解决坐标调整的问题。
看上面的图片,不管玩家和敌人处于什么位置,只要不重合,两个角色之间总是具有一定距离的,我们用 dx 和 dy 来代表 x 方向和 y 方向的差值。根据 dx 和 dy,基于敌人靠近玩家的概念,我们就可以得出敌人应该前进的方向。
敌人应该具有一定的速度,根据这个速度向玩家靠近。所以我们可以先定义一个变量来代表敌人的速度:enemySpeed。
根据分析,我们可以得出下面的计算公式:
dx = player
相关文档:
在之前我们已经完成一个按圆的分布的效果,现在开始,我们对其进行一些扩展,结合到xml 和外部加载图片来测试这些交互小应用。
我们首先准备一些大小系列相同的图片。按一系列的顺序进行编写。编号为1.jpg--2.jpg--3---n.jpg;并且保存在单独的文件夹当中。
按下面一些xml格式来书写:
<?xml versi ......
Flash MX是Macromedia公司的一个的网页交互动画制作工具。与网页中标准的图像文件gif和jpg格式不同,用Flash MX制作出来的动化是矢量的,不管怎样放大、缩小,它还是清晰可见。 用Flash MX制作的文件很小,这样便于在互联网上传输,而且它采用了流技术,只要下载一部分,就能欣赏动画,而且能一边播放一边传输送数据。 交 ......
这个不是一个高深的概念,不知道这种命名方式对不对,它只是在我的脑海里面浮现一种符号,于是我把它记录下来,有可能是谬论,也可能是骗你的文章,但是我把这种灵感记录下来,作为一种灵感体现。我将它命名为“分布学”,范围在适用在flash技术当中。
不成熟概念:
利用图形符号的形状,将 ......
若所播放的flash里有字体乱码(显示为方块),那么按如下方法解决:
1 在终端里输入sudo gedit /etc/fonts/conf.d/49-sansserif.conf然后回车
2 将倒数第四行 <string>sans-serif</string> 改为 <string>文泉驿正黑</string>
保存即可,重启firefox,flash乱码解决了 ......