阳光VIP

少壮不努力,老大徒伤悲。平日弗用功,自到临期悔。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Flash 游戏设计笔记:鼠标类游戏(4)

Posted on 2012-02-17 20:16  阳光VIP  阅读(156)  评论(0编辑  收藏  举报

Flash 游戏设计笔记:鼠标类游戏(1)

http://blog.csdn.net/hero82748274/archive/2009/02/11/3878304.aspx

Flash 游戏设计笔记:鼠标类游戏(2)

http://blog.csdn.net/hero82748274/archive/2009/02/16/3897058.aspx

Flash 游戏设计笔记:鼠标类游戏(3)

http://blog.csdn.net/hero82748274/archive/2009/02/17/3899443.aspx

一,旋转炮台制作

 之前我曾经写了一些炮台的制作。这个炮台能够跟随鼠标旋转角度;他的原理很简单,使用Math.atan2(y,x)来求出对应的角度

如:(Fire 为场景上的Mc)

 Fire.rotation=Math.atan2(mouseY-Fire.y, mouseX- Fire.x)*180/Math.PI;

Flash 制作旋转炮台http://blog.csdn.net/hero82748274/archive/2008/11/04/3219431.aspx

由于rotation 是角度,所以要进行弧度转换角度单位

我们在场景上加入了一些名为Fire的影片剪辑

二、子弹的运行轨迹

  在fla 文件里面创建一个名为Ball的子弹类,当我们鼠标按下去就产生一个对象,而这个对象根据一个角度和一个速度进行运行,由于速度是矢量可以分解两个不同轴的速度一个是 dx 一个是dy

  dx=speed*cos(angle);

  dy=speed*sin(angle);

 物理上 h=dy*t;

          s=dx*t ;在一定时间内运行一个在某一个角度的恒速的运动

Flash上的物理:

 

 这里我们只是计算机出它所在的子弹初始化位置:

2.1子弹的速度分量:

简单一点来说:根据角度来计算出速度speed 的两个分量;

  ball.vx=speed*Math.cos(angle*Math.PI/180);

  ball.vy=speed*Math.sin(angle*Math.PI/180);

2.2子弹运行

 当我们指定了子弹的初始角度和初始速度,按理想状态(不引入重力),它会以这个方向一直运动下去。

  接下来,我们所做的事情是让子弹能够按照这个速度和方向运行;

ball.addEventListener(Event.ENTER_FRAME,BallMove); 使用Event.ENTER_FRAME 事件让其每一帧产生渲染。

这样 每一关帧就会产生一个像素的位移,子弹的坐标也发生了改变。

在物理当中 S=v*t; 位移=速度X时间

而在flash里面,其实已经隐藏了时间,代替为帧

 

物体.x+=Speed*T 而T就是隐藏的帧

物体.y+=Speed*T

2.3引入重力

 

 

由于子弹在空中运行的时候,它受重力和其他阻力,假设我们忽略子弹其他阻力,使用重力让子弹能够在重力的过程中

以一个抛物线的运动轨迹运行,所以在y轴的速度分量当中,我们要加上重力的加速度。假设为2.

这样就可以模拟出一个简单的重力效果

 效果:

zidan

酷吧:嘿嘿

 加上一些位图

zidang 222

 

 

代码清单:

累了明天再修改。