Flash 游戏设计笔记: 制作炮台
来源:互联网 发布:setlocale utf8 linux 编辑:程序博客网 时间:2024/05/17 09:36
郁闷很久,终于把这个小东西做出来了。下面是一些简单的代码,因为是在文档里面直接写的,这里只是想分享一下里面的代码
- var MouseX:Number;
- var MouseY:Number;
- var R:int=115;
- var t:Number=1;
- stage.addEventListener(Event.ENTER_FRAME,Run);
- function Run(event:Event):void
- {
- VX.text=Math.round(mouseX).toString();//取整数
- VY.text=Math.round(mouseY).toString();//这样写就要不断执行
- var X:Number=Math.round(mouseX)-Player.x;
- var Y:Number=Math.round(mouseY)-Player.y;
- var rot:Number=Math.atan2(Y,X)*180/Math.PI;//Math.atan2 计算出来的是弧度单位,因此要转换个度角度很重要不要忘记了
- Player.rotation=rot;//注意rotation以度为单位,所以
- }//计算枪转动
- var ball:Ball; //炮弹
- var angle:Number=0; //角度
- var vx:Number=0;
- var vy:Number=0;
- stage.addEventListener(MouseEvent.MOUSE_DOWN,MouseDown);
- function MouseDown(event:MouseEvent):void
- {
- angle=Player.rotation;
- trace(angle);
- ball=new Ball();
- addChild(ball);
- var ballX:Number=Player.x+R*Math.cos(angle*Math.PI/180);//子弹x方向
- var ballY:Number=Player.y+R*Math.sin(angle*Math.PI/180);//子弹y方向
- ball.x=ballX;//子弹x初始位置
- ball.y=ballY;//子弹y初始位置
- ball.vx=10*Math.cos(angle*Math.PI/180);//子弹x方向 的速度,技巧就是在这里
- ball.vy=10*Math.sin(angle*Math.PI/180);//子弹y方向 的速度
- ball.addEventListener(Event.ENTER_FRAME,BallMove);
- }
- function BallMove(event:Event):void
- {
- var mc:MovieClip=event.currentTarget as MovieClip;
- mc.x+=mc.vx;
- mc.y+=mc.vy;//技巧就是这里
- }
基本的原理:第一要使用到反余切球一个角度。
var rot:Number=Math.atan2(Y,X)*180/Math.PI;d
这里利用这个函数来球一个角度A,也就是一个炮台的转动的角度。
这个角度同样是子弹发射的角度。
第二,当我们按下鼠标的时候,触发了一个按下的事件,这个事件实际上的作用产生一个子弹,原理很简单只要new 进来就可以,
ball=new Ball();
addChild(ball);
然后 初步分布他的初始位置,和初始的方向位置
var ballX:Number=Player.x+R*Math.cos(angle*Math.PI/180);//子弹x方向
var ballY:Number=Player.y+R*Math.sin(angle*Math.PI/180);//子弹y方向
ball.x=ballX;//子弹x初始位置
ball.y=ballY;//子弹y初始位置
接着:为子弹分一个初始的速度,和一个监听。注意一个小小的细节,如果ball.vx 改成vx ,和ball.vy改成vy 猜想一下会有什么问题呢?
ball.vx=10*Math.cos(angle*Math.PI/180);//子弹x方向 的速度,技巧就是在这里
ball.vy=10*Math.sin(angle*Math.PI/180);//子弹y方向 的速度
ball.addEventListener(Event.ENTER_FRAME,BallMove);
最后是子弹运动
function BallMove(event:Event):void
{
var mc:MovieClip=event.currentTarget as MovieClip;
mc.x+=mc.vx;
mc.y+=mc.vy;//技巧就是这里
}
如果我改成了vx 和vy
function BallMove(event:Event):void
{
var mc:MovieClip=event.currentTarget as MovieClip;//改成Movieclip类型
mc.x+= vx;
mc.y+= vy;//注意}
当我发炮弹的时候,其他子对象也会跟着一起走。之前由于没有注意到这个地方,一直都很郁闷到今天才解决了这个问题
知道这个原理后,日后我们就可以制作一些炮弹的小游戏。
再一个想法:那就是炮弹作为一个MovieClip 类,那么这个类可以带属性,其中一个是他的速度
ball.vx,
ball,vy,
写成一个类的写法去完成这个事情。具体的就不再去研究,希望有用
- Flash 游戏设计笔记: 制作炮台
- Flash 游戏设计笔记:计时器制作
- flash游戏设计笔记:区块地图制作(一)
- flash 游戏设计笔记
- flash 游戏设计笔记:键盘控制
- flash 游戏设计笔记:切割位图技术
- flash 游戏设计笔记:切割位图技术
- flash 游戏设计笔记:删除对象
- flash 游戏设计笔记:递归清除bitmapData
- flash 游戏设计笔记:textArea地scrollV
- flash 游戏设计笔记:人物行走
- flash 游戏设计笔记:坚持几秒
- Flash 游戏设计笔记:鼠标类游戏(1)
- Flash 游戏设计笔记:鼠标类游戏(2)
- Flash 游戏设计笔记:鼠标类游戏(3)
- Flash 游戏设计笔记:鼠标类游戏(4)
- cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第六步---炮台&点击炮台添加英雄&英雄升级
- 旋转的小炮台:如何使用Cocos2D制作一款简单的iphone游戏第2部分
- C++指针探讨 (-) 数据指针
- 神经网络入门连载之六
- Web 开发工具箱: 120个 Web 开发工具
- A summary about creation of kinds of xen domU
- 动态添加表格行并设置样式(转自网络)
- Flash 游戏设计笔记: 制作炮台
- 联合利华vs乡镇企业
- java堆和栈的区别
- jdom中使用文件作为输入源,构造Document对象的问题
- 【HGE基础教程--连载 By 寰子】
- 经济危机来了,但是你还是应该“该干什么干什么”
- Java基础:三步学会Java Socket编程(转)
- 谈点非技术的----恭喜中国又创造世界史上最伟大世界记录
- Oracle里DUAL表是什么表?