上一次,我们限制了敌人的范围,这次,我们再做进一步的限制。
三、指定范围内的跟踪深化
再看看这个例子:
现在的敌人的视线范围比较真实了,它一直在四周查看,只有当你进入它的视觉范围的时候,敌人才会来追赶你。
这就是有指定范围的跟踪敌人,它的原理是和前面一样的:
如果(玩家进入敌人范围)
{ 如果(玩家x坐标 <> 敌人x坐标){
调整敌人x坐标,趋近玩家x坐标
}
如果(玩家y坐标 <> 敌人y坐标){
调整敌人y坐标,趋近玩家y坐标
}
}
我们可以在 enemy 里面放置一个扇形的范围,给一个实例名叫做 range,那么,enemy.range 就是敌人的视力范围了。
下面是完整的第一帧源代码:
var enemyspeed:number = 1;
var enemysightspeed:number = 1;
var dx, dy:number;
/* functions */
tracker = function () {
player._x = _xmouse-10;
player._y = _ymouse-10;
dx = player._x-enemy._x;
dy = player._y-enemy._y;
if (enemy.range.hittest(player._x, player._y, true)) {
if (math.abs(dx)>=enemyspeed) {
enemy._x += ((dx>=0) ? enemyspeed : -enemyspeed);
}
if (math.abs(dy)>=enemyspeed) {
enemy._y += ((dy>=0) ? enemyspeed : -enemyspeed);
}
} else {
enemy.range._rotation += enemysightspeed;
enemy.range._rotation %= 360;
}
updateafterevent();
};
/* run it*/
setinterval(tracker, 10);
蓝色部分是我们新添加的代码,在敌人没有看到玩家的时候,会自动在原地巡视,如果发现玩家进入视觉范围,酒会开始追赶。
为了简单理解,我们没有加入更多的代码,因此看起来敌人是侧着身子追过来的,经过简单的计算,添加适当的代码,敌人酒会表现得更为真实,这个课题就留给您自己去解决吧。
这次的源代码请在这里下载附件(zip压缩文件,6k)。
到此为止,简单的跟踪敌人就实现了,下一次,我们要开始讲解另外一些情况,请继续关注啊!
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器