Flash游戏开发系列一:游戏中的敌人(5)

  第四篇:Flash游戏开发系列一:游戏中的敌人。

  五、跟踪导弹

  看看这个例子,在动画屏幕上按下鼠标,导弹就会跟踪玩家,直到击中玩家:

  对于新手来说,一下子就实现它可能不太容易,我们来一点一点的做。

  (1)导弹的方向

  我们先来实现导弹朝向玩家的功能,就像下面这个:(按下鼠标观看)

  首先,我们注意到,敌人的导弹是要朝向玩家的,这和前面不同。前面的敌人是一个圆头圆脑的家伙,不用分辨它的方向。我们就先来看一下如何让敌人有方向感。

  首先给新手讲解一下基本知识:用鼠标来触发动画。

  我们先设定一个变量,布尔类型的 clickable。在初始化的时候,我们将其设置为真,即 true。

var clickable:Boolean;
init = function () {
enemy._x = 40;
enemy._y = 350;
enemy._rotation = 0;
clickable = true;
};

  而当鼠标按下的时候,我们来判断 clickable 是否为真,如果为真就可以执行新的语句,并且将 clickable 设置为假,即 false。这样,如果鼠标按下一次以后,再按就不起作用了。

onMouseDown = function () {if (clickable) {setInterval(run, 10);clickable = false;}};

  这样我们就可以进入我们的主要内容了:改变导弹的角度。

  敌人到玩家之间一般情况下是会有一个夹角的。Flash 给我们提供了 Math.atan2(y,x) 来求得上图中所表示的 angle! 。所以我们很容易的就能够得到这个值 Math.atan2(dy, dx)*180/Math.PI,因为取到的是弧度,所以后面加了 *180/Math.PI 来转换成角度。

  得到 angle! 以后,我们会发现,我们的导弹在 enemy._rotation = 0 的时候,已经处在上图 90 度的位置上,在 enemy._rotation = 90 的时候,已经处在上图 -180(也是0) 度的位置上,在 enemy._rotation = 180 的时候,已经处在上图 -90 度的位置上。所以我们要做一下处理,给它减去 270 度,为了让这个角度很好的保持在 0 到 360 度之间,我们再给它加上 720 度然后针对 360 度取模,最后就变成这个样子:

(Math.atan2(dy, dx)*180/Math.PI+450)%360

  这样,我们计算之后得到的角度就可以直接应用到我们的 enemy 上面了。

  出于习惯,我把计算角度这部分做了一个函数,所以在主运行函数 run 里面,程序看起来很简单。

  剩下的不用多解释了,下面是完整的第一帧源代码:

var clickable:Boolean;
//
init = function () {
enemy._x = 40;
enemy._y = 350;
enemy._rotation = 0;
clickable = true;
};
onMouseMove = function () {
player._x = _xmouse-10;
player._y = _ymouse-10;
updateAfterEvent();
};
onMouseDown = function () {
if (clickable) {
setInterval(run, 10);
clickable = false;
}
};
getAngle = function ():Number {
var dx:Number = player._x-enemy._x;
var dy:Number = player._y-enemy._y;
return ((Math.atan2(dy, dx)*180/Math.PI+450)%360);
};
run = function () {
var angle:Number = getAngle();
enemy._rotation = angle;
};
// Run Program
init();

  这次的源代码请在这里下载

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索function
, math
, 角度
rotation
,以便于您获取更多的相关知识。

时间: 2024-11-02 07:51:52

Flash游戏开发系列一:游戏中的敌人(5)的相关文章

Flash游戏开发系列一:游戏中的敌人(7)

第六篇:Flash游戏开发系列一:游戏中的敌人. 五.跟踪导弹(续完) 上次我们已经知道怎样让导弹的旋转看起来像那么回事,紧接着就是让导弹运动起来了. 导弹的一些属性,我们需要好好定义一下,这是完整的初始化函数: init = function () {enemy._x = 40;enemy._y = 350;enemy._rotation = 0;enemy_obj.MAXAngle = 6;enemy_obj.MAXSpeed = 4;enemy_obj.speedX = enemy_obj

Flash游戏开发系列一:游戏中的敌人(6)

第五篇:Flash游戏开发系列一:游戏中的敌人. 五.跟踪导弹(续) 前面讲过了如何让导弹朝向玩家,但是真正在应用的时候,不可能这么生硬的体现.大家可能也发现了,导弹的方向一直指向玩家,其实很不真实,那么如何才能更加真实一些呢.常用的方法有几种,我们这里介绍其中一种,其它的大家可能要去参考游戏开发图书了. 在这里,我们使用的方法是,导弹有一个最大转向角度,也就是说,如果转向达到这个角度,就不能再转了,这样,看起来就会真实一些,导弹也就不回一下子面对玩家,看看下面这个例子,我把导弹的最大转向角度设

Flash游戏开发系列一:游戏中的敌人(4)

第三篇:Flash游戏开发系列一:游戏中的敌人. 四(插).半随机移动的敌人 看看这个例子: 我们可以看到,一个敌人按照一定的规律从上面到下面移动.主要的规律是自上而下,但是移动的范围是随机的.这种方法在早期的游戏里面经常使用,包括一些大型的游戏.其实这是一种非常简单的运动方式,但是如果使用得当,也很有威胁. 我们大概瞧一下原理: 敌人每次向一个方向以随机的速度走八步,然后再改变方向,再走八步.在这个例子里面,为了简单说明,敌人走到画面底部以后,我们会让它重新回到原来的位置,重新再走. 我们创建

Flash游戏开发系列一:游戏中的敌人(3)

第二篇:Flash游戏开发系列一:游戏中的敌人. 三.指定范围内的跟踪深化 再看看这个例子: 现在的敌人的视线范围比较真实了,它一直在四周查看,只有当你进入它的视觉范围的时候,敌人才会来追赶你. 这就是有指定范围的跟踪敌人,它的原理是和前面一样的: 如果(玩家进入敌人范围){ 如果(玩家x坐标 <> 敌人x坐标){调整敌人x坐标,趋近玩家x坐标}如果(玩家y坐标 <> 敌人y坐标){调整敌人y坐标,趋近玩家y坐标}} 我们可以在 enemy 里面放置一个扇形的范围,给一个实例名叫做

Flash游戏开发系列一:游戏中的敌人(2)

第一篇:Flash游戏开发系列一:游戏中的敌人 上一次,我们已经学习了最基本的敌人跟踪方法,这次,我们来限制一下敌人. 二.指定范围内的跟踪 首先看看这个例子: 现在的敌人周围有了一个范围,那么,只有当你进入这个范围的时候,敌人才会来追赶你. 这就是有指定范围的跟踪敌人,它的原理是: 如果(玩家进入敌人范围){  如果(玩家x坐标 <> 敌人x坐标){      调整敌人x坐标,趋近玩家x坐标  }  如果(玩家y坐标 <> 敌人y坐标){      调整敌人y坐标,趋近玩家y坐标

安卓开发-安卓手机游戏开发用什么游戏引擎

问题描述 安卓手机游戏开发用什么游戏引擎 想学安卓游戏开发,想问问现在安卓开发用什么游戏引擎,大型的预习也是java代码吗??还有网游呢???untiy3d只能是c#吗???cocos2d呢??真心求知道谢谢....没有开发过游戏,请调教 我现在在java web公司上班 没怎么解除新鲜的实物 请大家帮忙 想做一个小型的角色扮演类网游,学习一下.看点什么资料好呢 解决方案 cocos2d是最流行的 解决方案二: 开发Android游戏的引擎有很多,比如 cocos2d.AndEngine.Uni

android-Android游戏开发, Android小游戏

问题描述 Android游戏开发, Android小游戏 有没有android弹珠游戏的源代码,eclipse环境下的android源代码 解决方案 http://download.csdn.net/detail/zhoujiao_2010/2426306 这里就有,自己下吧

手机游戏开发成为安卓应用中的重中之重

目前,对于现在的中国大陆智能手机操作系统市场来说,占大部分份额的还是安卓系统.塞班系统还有ios系统三大手机系统.当然还有一部分智能手机是使用的别的系统的,例如黑莓公司使用的就是其公司本身研发的系统黑莓系统.但不得不承认,在这么多系统中安卓系统了是风头最劲的一个.不管是安卓系统的制造商还是软件开发者都具有永不松懈的创新创新精神,而且安卓系统对于"未来适用于各类链接性设备"的定位也使更多的开发商加入其中!不难预测,安卓未来的前景非常广阔. 随着HTC.MOTO.联想,中兴.华为.三星等手

【ANDROID游戏开发之八】游戏中添加音频-详解MEDIAPLAYER与SOUNDPOO!并讲解两者的区别和游戏中的用途!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/android-game/312.html  ----------------------- 『很多童鞋说我的代码运行后,点击home或者back后会程序异常,如果你也这样遇到过,那么你肯定没有仔细读完Himi的博文,第十九篇Himi专门写了关于这些错误的原因和解决方法,这里我在博客都补充说明下,省的童鞋们总疑惑这一块:请点击下面联系进入阅读