cocos2d lua-x的坦克大战怎么发射子弹

请登录查看
子弹层的处理这一篇将会处理完子弹层的其他要点。子弹的初始位置在飞机的机头位置,因为飞机在游戏的过程中会随着玩家的触摸而改变其位置,所以,子弹的初始位置只能以当前飞机位置为基准进行添加。
CCPoint planePosition=PlaneLayer::sharedPlane-&getChildByTag(AIRPLANE)-&getPosition();
CCPoint bulletPosition=ccp(planePosition.x,planePosition.y+PlaneLayer::sharedPlane-&getChildByTag(AIRPLANE)-&getContentSize().height/2);
bullet-&setPosition(bulletPosition);还记得当时给飞机加的tag(AIRPLANE)么?通过sharedPlane的getChildByTag就能获取到飞机精灵,然后计算出子弹初始的位置,添加到子弹层。其实更为严谨的方式是设计一个子弹管理器,然后在管理器中添加子弹,这里简单的处理,会比较好理解,虽然会影响到编程风格。子弹的飞行效果,很简单,就是往Y方向移动,但是X方向不能改变。所以要注意,已发射的子弹不能随着飞机的移动而跟着移动,一旦这颗子弹发射了,它就是一个独立的个体,不管飞机移动或者爆炸了,它只会按照自己的规则进行运动而不受干扰。因为子弹的初始Y位置是不固定的,如果固定死一个时间会导致不同子弹的移动速度不同,所以必须先把每颗子弹的运动时间计算出来。
float length=CCDirector::sharedDirector()-&getWinSize().height+bullet-&getContentSize().height/2-bulletPosition.y;
float velocity=420/1;
float realMoveDuration=length/
CCFiniteTimeAction* actionMove=CCMoveTo::create(realMoveDuration,ccp(bulletPosition.x,CCDirector::sharedDirector()-&getWinSize().height+bullet-&getContentSize().height/2));
CCFiniteTimeAction* actionDone=CCCallFuncN::create(this,callfuncN_selector(BulletLayer::bulletMoveFinished));
CCSequence* sequence=CCSequence::create(actionMove,actionDone);
bullet-&runAction(sequence);cocos2d-x提供了一个很好用的数组类CCArray,它相当于一个容器。我们可以把一些创建出来的精灵放在里面进行管理,在不需要的时候,从中删除它并且从屏幕上删除它(有时候看不见不代表它们已经从屏幕上删除了)。因为CCArray::create函数调用了autoRelease,所以我们必须在调用创建后手动进行retain,以免超出使用范围后被释放,同时在析构函数中再进行release防止内存泄漏。(1)创建成员变量指针
CCArray* m_pAllB(2)子弹层的构造函数和析构函数
BulletLayer::BulletLayer(void)
m_pAllBullet=CCArray::create();
m_pAllBullet-&retain();
BulletLayer::~BulletLayer(void)
m_pAllBullet-&release();
m_pAllBullet=NULL;
}(3)子弹飞出屏幕后(即子弹运动结束后,自然消失而不是和敌机碰撞)的调用函数
void BulletLayer::bulletMoveFinished(CCNode* pSender)
CCSprite* bullet=(CCSprite*)pS
m_pAllBullet-&removeObject(bullet);
this-&bulletBatchNode-&removeChild(bullet,true);
}(1)开始发射子弹
void BulletLayer::StartShoot(float delay)
this-&schedule(schedule_selector(BulletLayer::AddBullet),0.01f,kCCRepeatForever,delay);
}(2)停止发射子弹
void BulletLayer::StopShoot()
this-&unschedule(schedule_selector(BulletLayer::AddBullet));
}(3)删除某颗子弹
void BulletLayer::RemoveBullet(CCSprite* bullet)
if (bullet!=NULL)
this-&m_pAllBullet-&removeObject(bullet);
this-&bulletBatchNode-&removeChild(bullet,true);
}好吧,到此为止,子弹层就创建完毕了,我们把它加入GameLayer层的init函数中,并执行开始发射子弹,看一下飞机是不是可以发射子弹了。
this-&bulletLayer=BulletLayer::create();
this-&addChild(bulletLayer);
this-&bulletLayer-&StartShoot();效果图
意见反馈:
联系方式:
广告等垃圾信息
不友善内容
违反法律法规的内容
不宜公开讨论的政治内容下次自动登录
现在的位置:
& 综合 & 正文
使用《红孩儿工具箱》开发基于Cocos2d-x的《坦克大战》游戏
大家好,我是红孩儿.上一节我们学习了使用《红孩儿工具箱》开发《打地鼠》游戏.这一节我们继续学习使用《红孩儿工具箱》来开发《坦克大战》游戏.
《坦克大战》这个游戏大家小时候都玩过,它给了我们儿时一个实现英雄梦的机会.现在每每想起和儿时的小伙伴们一起玩FC时的情景,都会感觉无限美好.唉,人一长大,各种烦闷都来了,不说这个了,下面来介绍一下本次《坦克大战》的设计规划.
我们这是个单机游戏,玩家可以控制一辆坦克在游戏中对敌方进攻的坦克进行回击,保卫自已的大本营.将敌方坦克都消灭了,当前关卡就胜利结束了.如果被敌方坦克消灭,那当前关卡就失败了.
首先,我们要制做一个开始界面,有一个背景图和两个按钮-开始游戏和退出游戏.这个界面的作用是给玩家一个宣明的主题,并让玩家选择是否游戏.需要使用工具箱的界面编辑器.
之后,我们做一个战争的剧情动画,做这个是为了让玩家能够迅速的进入到主题,有一种身临其境的感受.为了更好的把战争的气氛渲染出来,我们这里使用打字机效果来说明剧情背景故事并配备一个老照片的动画更好的对人的心理进行一个触动.这里需要使用工具箱的字体编辑器来生成字图,以及使用动画编辑器来制做动画.
然后我们进入到关卡界面,本次我们设计了十五个关卡,另外要求下次玩时要保存已玩过的关卡.这样就不必每次都从第一关开始玩了.这里当然还是要使用工具箱的界面编辑器.
再继续就是游戏的主场景了,核心的玩法都在这里面了,场景由工具箱的地图编辑器进行制作,玩法逻辑则在代码中实现.
打完一仗后有一个关卡结束的界面,对胜利,失败和击毁的坦克有一个结算处理.让玩家稍适休息,继续战斗.
所有十五个关卡都结束会进入到通关界面,通过这个界面中的动画将战争结束的激动心情更好的烘托出来.玩到这里,相信很多小伙伴会把悬着的一颗心放下,感叹一下幸好没生活在战争时代,幸好,幸好.
好了,我们现在开始第一步:开始界面制作.
一.开始界面制作
首先我们需要从
网站,在左上角的 下载红孩儿工具箱最新版 链接处下载最新的0.2.3版本。下载后我们将其解压到自定义的目录。打开后我们可以看到工具箱EXE程序和一个dx9的dll.还有一个资源目录Resource,一个测试设备图片存放目录Dev以及一个配套的SDK目录.红孩儿工具箱只需要这个EXE和对应的这个dll就可以运行在Windows操作系统了.本次的更新重点是多了一个工具箱配套库目录-HHR,这里面有两个子目录include和Lib
,分别为包含头文件和静态Lib库.同时又分为基础库HHRLib和高级特效库EffectLib.
在工具箱所在目录的资源目录Resource中有一个《坦克大战》的资源目录TankWar。为了方便学习和使用,我把《坦克大战》所需的资源和做好的场景地图,动画源文件都放在这里了.
启动工具箱,这时我们可以看到红孩儿工具箱的登录界面,我们一般查看可以选择离线登录,但离线登录不能导出动画和场景,主要是用于查看和编辑。如果是想导出,那就最好到论坛注册一个正式用户的账号。在这里我们输入注册账号和密码后,点击“登录”,稍等片刻完成验证后即可进入工具箱主界面。
我们首先要做的,是先设置一下我们的工程资源目录点击“设置工程资源目录”按钮,选择我们的资源目录即可,一旦设置完成,工具箱就会开始遍历和登记工程目录下所有的文件资源这样我们就可以使用工程资源目录下的图片了.下次再使用工具箱时也会自动的设置好资源目录
进入工具箱后我们来作做一下开始界面选择界面编辑选项卡进入到界面编辑器当前版本的界面编辑仍是未完全版有很多高级控件还未实现不过对于一些简单的界面也基本够用了
界面编辑器分为四大区域,顶部主要是界面文件打开,保存,导出按钮与控件选取区域,左边是控件关系树.右边是属性值设置区域,中间是界面的主视图区域.
我们要制作一个界面,首先要考虑这个界面都需要哪些控件.在我们这个开始界面中,主要是有一个背景图和两个按钮,所以我们至少需要两种控件,分别为面板控件和按钮控件.我们现在来做一下.
在左边的控件树的Root项下我们右键单击,在弹出的菜单中选择”增加子结点-面板”.
单击后我们可以看到在中央视窗区域会生成一个面板同时在右边的属性编辑区域出现相应的属性值
我们看到此时这个界面是处于被选中状态的,因为它的顶点和边界中点有拖动块,我们可以通过鼠标直接点击这个面板并移动它,也可以通过鼠标点击小拖动块来改变他的大小.如果觉得不好控制,还可以直接在右边的属性框中输入数据值来进行修改.另外我们可以通过鼠标中健或滚轮按下后移动鼠标来方便我们改变编辑时我们观察点.
我们希望这个面板填充背景图片,这时我们来看一下面板控件的属性都有什么.
Enable:是否有效无效的话就不能响应屏幕触屏控制
PosX,PosY,PosZ,具体的位置
Width,Height:控件宽高
Normal_Image:所要填充的图片
ImageShowType:图片缩放方式有按控件大小按图片大小和平铺填充
在这里我们点击编辑框会有一个按钮点击后弹出选择显示资源的对话框这时我们可以选择控件要显示的图片或动画
如果当前选择显示资源的对话框中没有我们需要的素材我们可以点击“导入资源文件到当前资源库中”.并查找相应的图片或动画文件加入到这里.
找到后,我们点击"打开",这时就被加入到资源库中了.我们点击左边对应的树项,这里可以在右边看到它,这里显示会有点大,我们可以点击"限制大小"来进行界面大小重置.
看着没什么问题,我们就可以点击"应用此图片"了.之后我们的面板就会填充相应的图片.然后再点击"关闭选择窗口"还进入到界面编辑器.
这时候我们的面板位置,大小还不对,我们需要修改一下属性,既然图片是大小,我们这里就让控件大小按照图片大小就可以了。选择为图片大小,之后将设为。因为在中使用的是的坐标系,所以这里调整为。基准点,点以上显示界面。
这样背景图就做好了,我们继续来做一下两个按钮。我们在左边的控件树的面板控件树项上右键单击,在弹出菜单中点选“增加子控件-按钮”,这时候在面板的左上角会产生出一个按钮控件。
然后我们把创建出来的按钮控件放到合适的地方,然后看一下属性编辑区域。
这里除了和面板一件的基本属性外,又多了一些控件特有的属性
:这里是说鼠标移上时的图片资源,适用于游戏的开发,如果是触屏游戏就没这个需求了。
鼠标按下或触屏响应时的图片资源。
按下响应函数:这个是对应界面的响应处理函数名称。在界面编辑器保存导出后,会生成一个对应的文件,如果是使用来处理界面逻辑,则可以在这里进行函数名的设置,当然,工具箱本身已经给他默认了一个基于控件名称的响应函数.
我们点击分别在选择图片资源对话框中将"开始游戏"图片加入.
将这几种状态的图片资源都选中之后我们再设置控件也按图片大小进行显示,并拖放到合适的位置,这时候我们把鼠标移上或点击时就可以看到相应状态时的图片了.
"开始游戏"的按钮做好了,我们在左边它对应树项上右键单击,在弹出菜单中点击"复制当前控件",然后在面板控件项上右键再单击,在弹出菜单中点击"粘贴到此结点下"这样就会又复制出一个新的按钮.我们用鼠标可以将它拖到合适的位置,并按照刚才设置开始游戏"按钮的办法,将另外的"退出游戏"的按钮也做出来.
我相信大家一定可以自已做到,这里我就不再赘述了.
这个界面基本功能控件算做完了,下面我们保存一下界面
这样界面只有静态图构成稍单调了一点现在我们来为他增加一些动画元素在标题处增加两个旋转闪动的星星我们点击工具箱的编辑器选项页的“动画编辑”,进入到动画编辑器.
在动画编辑器左边的结点树区域,在根结点上右键,在弹出的菜单中点击"增加图片结点".
我们在图片上双击,会弹出选择图片资源的对话框.然后我们将事先准备好的两个星星的图片加载进来.
应用此图片后,原来显示图标的结点会变成星星图片.
帧处右键单击,会弹出一个菜单,点击"加入关键帧".
之后我们可以看到帧显示区域在帧处出现了关键帧的标记.然后我们在图片结点上点击右键.在弹出菜单里找到"调整自身旋转".
点击之后,会弹出一个"调整图片自身的旋转"输入对话框.在这时我们希望图片绕轴旋转一圈.所以我们在处输入角度.即旋转一周.
确定后我们可以再在帧处增加一个新的关键帧.
然后我们点击右上角的"属性编辑"对话框.这时候我们可以看到结点的属性编辑面板会显示出来.
在这个编辑面板里.我们可以调整四个顶点的透明度都调整为.这样可以让图片完全透明.
这样这个动画就做好了,我们点击"播放动画"可以来查看一下.
最后我们保存一下动画.这里需要在弹出的"请设置动画名称"中输入动作名称.
现在动画文件就做好了.我们继续把另一个星星的闪烁旋转的动画做好并保存之后,我们再加到界面编辑器中,在面板上新加入两个子控件面板.并设置其图片资源为我们刚才做好的两个动画文件.
选中相应的动画后,应用为面板所对应的动画资源即可.这样我们就把界面上的动画元素做好了.
  保存一下,然后导出待用.
二.剧情动画制作
这里我们要做一个打字机效果来显示剧情文字.并在结束后显示一个老照片动画.我们这里可以使用工具箱的文字字图编辑器来制作字图.我们点击工具箱的"字体编辑"按钮进入到字体编辑器.
首先我们将所用到的文字都放到一个新建的文档中.
      
     
然后我们在字体编辑器中加载相应的文档文件.之后在文字编辑框中会显示出文字.
  然后我们点击"选择字体",在弹出的字体对话框中选择一种字体使用.
然后我们点击"开始生成",在等待几秒后,字图被生成出来.
点击"编辑文字效果"后可以进入到文字效果编辑面板.这时我们可以对颜色,描边以及纹理做一些调整.
调好了之后就可以点击"导出字图"来将文字导出和了.这样我们的剧情介绍字图就制作完成了.
三.剧情动画制作
在剧情文字介绍的打字机效果动画结束后,我们还需要再做一个老照片动画,现在我们点击“动画编辑”进入到动画编辑器.
  首先我们在左边的结点树控件区域右健,增加一个图片结点,然后我们按照之前的方法设置其对应的图片为老照片.
之后我们在下部帧显示区域第帧区间内右键单击,在弹出菜单里选择新增一个关键帧,同样也在帧区间内增加一个关键帧,然后我们点击"属性编辑"
在展开的属性编辑面板里我们点击"隐藏精灵"复选框.使照片不显示.
使用同样的方法,我们在帧上增加关键帧,并设置显示或隐藏精灵,以达到动画播放时的快速照片闪现动画.
在帧显示设置之后,我们在下部的帧显示区域滑动条"当前显示起始帧"处调整一下帧显示区域的起始帧,这样我们可以设置区域显示不到的帧信息.我们在帧处再增加一个关键帧.
在帧处我们通过属性设置来设计照片的四个顶点颜色改变.这样就可以实现变色动画了.
然后我们保存为并导出以供使用.
四.选择关卡界面制作
在看完战争的剧情动画后,我们将会进入到关卡界面,关卡界面主要是为了显示可以玩的关卡,它主要由一些按钮组成.在我们学会了制作开始界面后,这个关卡界面就很容易了.仍然是一样的方法.通过创建面板增加背景图,然后在上面加上一系列按钮并为它们选择相应状态图.在这里就不再赘述了.相信大家可以通过自已的实践来完成它.
五.游戏场景制作
游戏场景是游戏中最重要的部分了,我们终于开始进入到游戏场景的制作了,相信大家都很期待.我们现在就开始.
点击"场景编辑"后进入到场景编辑器.
在场景编辑器的左上角位置,点击按钮"创建",在弹出的对话框中输入场景的宽,高度,点击确定后在场景显示区域出现红色区域方框,即场景的大小.
我们用鼠标点击场景编辑器的中间分隔部分向右拖动,调整到合适位置以方便我们观察和编辑.
我们在右下部分的"场景层元素区域"中右键单击,在弹出的菜单中点击"增加新图层".这是一个背景图的格子图层,用于显示地表.
我们在弹出的"创建新图层"对话框中输入图层名称,格子大小.之后确定.
  确定之后,会在层元素显示区域出现一个树控件,这样这一层就建好了,我们可以在这一层里加入一些元素.在这里面的空白区域右键单击,在弹出菜单上点选"创建新图类",输入后点击"确定".君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于Cocos2d-x的手机游戏坦克大战的设计与实现
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口cocos2d-x C++ 语言坦克大战开发求助【cocos2dx吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:9,490贴子:
cocos2d-x C++ 语言坦克大战开发求助收藏
求大神 告知 FC坦克大战子弹和砖块的碰撞思路和逻辑怎么写, 地图是TMX,急
cocos2dx 从入门到精通 独立开发cocos2d 随到随学 欢迎上门领取学习资料!免费试学,2000元学习卡免费领取,美国上市培训机构,找cocos2dx,当然选择南京达内!
快来大神帮忙啊
实在是不行啦
好像是在瓦片地图上给子弹和砖块做不同的标记吧,
登录百度帐号推荐应用查看: 933|回复: 37
【Cocos2d-x】手游-精品老游戏坦克大战完整源码
主题帖子积分
四方传颂, 积分 7350, 距离下一级还需 650 积分
四方传颂, 积分 7350, 距离下一级还需 650 积分
麒麟币7212 枚
任务币0 枚
在线时间16 小时
本帖最后由 聆听 于
16:25 编辑
Cocos2d-x手游-精品老游戏坦克大战完整源码说明:
又一款经典的精品老游戏,坦克大战来袭!相信应该所有人都玩过,现在给大家放送坦克大战cocos2d-x版本,让你不仅仅可以再次体验经典,还能自己开发。
测试环境:
Cocos2d-x-3.2
VS2010及更高版本
QQ图片18.jpg (110.93 KB, 下载次数: 4)
Cocos2d-x手游-精品老游戏坦克大战完整源码
15:45 上传
QQ图片25.png (315.67 KB, 下载次数: 6)
Cocos2d-x手游-精品老游戏坦克大战完整源码
15:45 上传
下载地址游客,如果您要查看本帖隐藏内容请
CG游麟网-严正声明1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站仅提供学习交流平台,但不对本帖真实性和权益负责
3、资源下载区的所有资源,均来自互联网,非本站自制,与本站无关
4、下载区中所有资料、资源文件均来自于网络搜索和网友上传,仅作为学习研究之用,请必须在24小时内删除所下载文件,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担
5、如本帖侵犯到任何第三方权益,请立即邮件告知论坛,如邮件被误屏蔽/没有回应,请QQ联系我们,论坛将及时予与删除
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
【CG游麟网官方千人总群:/ CG游麟网官方千人2群:】
主题帖子积分
声名鹊起, 积分 819, 距离下一级还需 181 积分
声名鹊起, 积分 819, 距离下一级还需 181 积分
麒麟币580 枚
任务币50 枚
在线时间189 小时
非常崇拜楼主,真想以身相许了~~
主题帖子积分
声名鹊起, 积分 869, 距离下一级还需 131 积分
声名鹊起, 积分 869, 距离下一级还需 131 积分
麒麟币56 枚
任务币50 枚
矿工500 人
在线时间268 小时
手游-超级玛丽
主题帖子积分
声名鹊起, 积分 705, 距离下一级还需 295 积分
声名鹊起, 积分 705, 距离下一级还需 295 积分
麒麟币162 枚
任务币20 枚
在线时间54 小时
非常崇拜楼主,真想以身相许了~~
主题帖子积分
声名鹊起, 积分 598, 距离下一级还需 402 积分
声名鹊起, 积分 598, 距离下一级还需 402 积分
麒麟币178 枚
任务币0 枚
贡献105 点
在线时间28 小时
真的很漂亮~我喜欢!
主题帖子积分
初入江湖, 积分 5, 距离下一级还需 45 积分
初入江湖, 积分 5, 距离下一级还需 45 积分
麒麟币0 枚
任务币0 枚
在线时间0 小时
经典,超级经典
主题帖子积分
小有名气, 积分 374, 距离下一级还需 126 积分
小有名气, 积分 374, 距离下一级还需 126 积分
麒麟币334 枚
任务币0 枚
在线时间6 小时
ok真的非常棒!
主题帖子积分
苍生崇拜, 积分 27025, 距离下一级还需 2975 积分
苍生崇拜, 积分 27025, 距离下一级还需 2975 积分
麒麟币21273 枚
任务币200 枚
矿工500 人
在线时间537 小时
谢谢分享~~
主题帖子积分
锋芒初露, 积分 82, 距离下一级还需 118 积分
锋芒初露, 积分 82, 距离下一级还需 118 积分
麒麟币35 枚
任务币0 枚
在线时间2 小时
很好啊,非常感谢,
对我非常有用
主题帖子积分
小有名气, 积分 361, 距离下一级还需 139 积分
小有名气, 积分 361, 距离下一级还需 139 积分
麒麟币284 枚
任务币0 枚
在线时间11 小时
非常崇拜楼主,真想以身相许了~~
社区QQ达人
使用QQ帐号登录论坛的用户
论坛新人标志
发帖数 ≥ 1
CG游麟网忠实会员章 注册天数 ≥ 30
长期在论坛活跃
在线时间(小时) ≥ 20
论坛勤劳勋章
勤劳发帖活跃气氛
发帖数 ≥ 50
在线时间:9:00-22:00}

我要回帖

更多关于 quick cocos2d x 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信