二、指定范围内的跟踪
首先看看这个例子:
现在的敌人周围有了一个范围,那么,只有当你进入这个范围的时候,敌人才会来追赶你。
这就是有指定范围的跟踪敌人,它的原理是:
如果(玩家进入敌人范围)
{ 如果(玩家x坐标 <> 敌人x坐标){
调整敌人x坐标,趋近玩家x坐标
}
如果(玩家y坐标 <> 敌人y坐标){
调整敌人y坐标,趋近玩家y坐标
}
}
这个应该不难理解吧,我们可以理解为:敌人有一个视力范围,只要玩家进入这个范围,敌人就会进行追踪。这个的解决方法也不复杂,普通的算法是判断玩家和敌人的位置,如果两者之间距离达到或者小于一定的值,那么敌人就开始追踪。在 Flash 里面,我们更可以用简单的碰撞来实现,这样代码就更少了。
我们可以在 enemy 里面放置一个圆形的范围,给一个实例名叫做 range,那么,enemy.range 就是敌人的视力范围了。
这样,我们通过判断玩家是否和敌人的视力范围碰撞就可以实现这个效果了,下面是完整的第一帧源代码:
var enemySpeed:Number = 1;
var dx, dy:Number...
完整阅读本文...]]>
游戏是一个交互作品,简单说,就是通过用户的行为,会对这个作品的进程产生一定的影响。说到游戏,总要提到难度,游戏的难度在于:当你想要达到某种目的的时候,你会发现它的实现多少有些困难,困难越难克服,难度也就越大。不同类型的游戏有不同的难度,以及不同的实现方法。比如:俄罗斯方块通过改变方块下落的速度来改变游戏的难度,空战射击游戏通过不同的敌机以及不同的 Boss 来实现不同的难度。
在这个系列里面,我们想和大家一起研究一下游戏中敌人的运动方式,一点一点来。AS 基础最好是有一些,不然会稍微有些头疼。
一、最直接的跟踪
首先看看这个例子:
假定红色圆圈是玩家,绿色圆圈是敌人,移动你的鼠标,敌人就会跟着你跑。
这就是最简单的跟踪敌人,它的原理是:
如果(玩家x坐标 <> 敌人x坐标){
调整敌人x坐标,趋近玩家x坐标
}
如果(玩家y坐标 <> 敌人y坐标){
调整敌人y坐标,趋近玩家y坐标
}
这应该是极其容易理解的。那么具体的代码实现应该是什么样子的呢?
首先注意的是在HTTPService tag里有一个属性useProxy,属性值为true/false,默认属性为true。
这不同于flash里的loadVars或XML。
在WEB-INF/flex的flex-config.xml里第317行有这么一句注释:
For security, the whitelist is locked down by default.
Uncomment the first two urls below to enable access to all URLs
or add above the individual URLs you wish to access.
也就是说出于安全的考虑flex里的白名单(whitelist)是需要使用这自己修改的,unnamed list默认只有本地的http://{localserver}/*和https://{localserver}/*可以访问。其他的需要在flex-config.xml里的自行修改。
比如我们要访问80s的rss2.asp文档,我们就可以在后面加上
<url>http://www.80s.net.cn/*</url>
这和flash里的跨域访问不太一样,在flash中如果要跨域访问就需要在别人的website根下放置crossdomain.xml,或者用web脚本做代理,具体方法参考:
http://www.80s.net.cn/blog/comment.asp?Id=7
在flash里用loadVars.sendAndload("*.jsp","POST");,这样一旦有人反编译了导出的swf,这样就有可能向服务器端发送垃圾数据,但在flex里我们可以在named list里给service取名,这样就以为着更安全,就算别人反编译了导出的swf也只能看到serviceName,而不知道具体的地址。
如果你不需要这些功能,MM也给了解决的方法,就是把useProxy的值给false。
教程原文:
(完)
思妙文化授权转载
(完)
思妙文化授权转载
(完)
思妙文化授权转载
(完)
思妙文化授权转载
(完)
思妙文化授权转载
(完)