如何使用cocos2d x 3.14 使用制作一个太空射击游戏

分享给朋友:通用代码: <input id="link4" type="text" class="form_input form_input_s" value="" />复 制flash地址: 复 制html代码: <input type="text" class="form_input form_input_s" id="link3" value="" />复 制分享视频到站外获取收益&&手机扫码分享视频二维码2小时内有效【泰然教程】如何使用cocos2d-x实现经典射击游戏 &雷电&下载至电脑扫码用手机看用或微信扫码在手机上继续观看二维码2小时内有效【泰然教程】如何使用cocos2d-x实现经典射击游戏 &雷电&扫码用手机继续看用或微信扫码在手机上继续观看二维码2小时内有效,扫码后可分享给好友没有优酷APP?立即下载请根据您的设备选择下载版本
药品服务许可证(京)-经营-请使用者仔细阅读优酷、、Copyright(C)2017 优酷
版权所有不良信息举报电话:评论 - 130用户名:包灬子
文章数:36
评论数:13
访问量:66288
注册日期:
阅读量:1297
阅读量:3317
阅读量:439848
阅读量:1126526
[匿名]51cto游客:
51CTO推荐博文
& 因为iOS,Android设备使用触摸屏来输入,没有传统移动游戏设备配备的按钮,十字按钮或者模拟手柄,我们需要一个虚拟手柄来控制游戏。你可以使用虚拟手柄对游戏物体进行操控,就像使用实际的手柄一样。
SneakyInput控制手柄源码:&
把源码下载下来,加入到你的项目中,别忘了在android.mk添加相关内容哦!
我们首要目标是添加一个可以让玩家进行飞船射击的按钮,他们点击按钮的时候 会发射子弹,
----------------------
接下来 &我会在项目中添加一个新的类InputLayer ,这个类继承自CCLayer,他会被添加到MainScene
CCScene&*MainScene::scene()&{&&&&&CCScene&*pScene&=&NULL;&&&&&do&{&&&&&&&&&pScene&=&CCScene::create();&&&&&&&&&MainScene&*main&=&MainScene::create();&&&&&&&&&pScene-&addChild(main,&-1);&&&&&&&&&InputLayer&*input&=&InputLayer::create();&&&&&&&&&pScene-&addChild(input,&0);&&&&&}&while&(0);&&&&&return&pS&}&
将SneakyInput添加到InputLayer的头文件中
#include&&SneakyInput/SneakyButton.h&&#include&&SneakyInput/SneakyJoystick.h&&#include&&SneakyInput/SneakyButtonSkinnedBase.h&&#include&&SneakyInput/SneakyJoystickSkinnedBase.h&&
另外,我在头文件中加了一个SneakyButton成员变量,因为我们马上就会用到。
class&InputLayer:&public&CCLayer&{&public:&&&&&InputLayer();&&&&&virtual&~InputLayer();&&&&&&SneakyButton&*snkB&&&&&&void&update(ccTime&time);&&&&&&bool&init();CREATE_FUNC(InputLayer)&&&&&;&};&
在init方法中 我们生成了一个SneakyButton
bool&InputLayer::init()&{&&&&&bool&bRet&=&false;&&&&&do&{&&&&&&&&&&CCSize&size&=&CCDirector::sharedDirector()-&getWinSize();&&&&&&&&&&float&buttonRadius&=&42;&&&&&&&&&&snkBtn&=&new&SneakyButton();&&&&&&&&&snkBtn-&autorelease();&&&&&&&&&snkBtn-&initWithRect(CCRectZero);&&&&&&&&&snkBtn-&setPosition(CCPointMake(size.width-buttonRadius,buttonRadius));&&&&&&&&&snkBtn-&setRadius(buttonRadius);&&&&&&&&&this-&addChild(snkBtn);&&&&&&&&&&this-&scheduleUpdate();&&&&&&&&&bRet&=&true;&&&&&}&while&(0);&&&&&return&bR&}&
& 因为SneakyButton没有用到initWithRect方法中的CGRect参数,所以我传了一个CGRectZero给这个方法。实际的处理触摸事件的代码是使用radius(半径)这个属性来决定按钮是否要响应触摸。
InputLayer类通过以下代码预约更新
this-&scheduleUpdate();&
更新方法是用来测试按钮是否已被点击
void&InputLayer::update(ccTime&time)&{&&&&&if&(snkBtn-&getIsActive())&{&&&&&&&&&CCLog(&按下按钮&);&&&&&}&}&
运行程序,你会发现屏幕上没有任何按钮 &不过你可以点击屏幕右下角 然后可以在log日志中正在打印&按下按钮&
接下来 &我们将让按钮可见,也就是添加皮肤
&这里 我们使用到了SneakyButtonSkinnedBase
bool&InputLayer::init()&{&&&&&bool&bRet&=&false;&&&&&do&{&&&&&&&&&&CCSize&size&=&CCDirector::sharedDirector()-&getWinSize();&&&&&&&&&&float&buttonRadius&=&42;&&&&&&&&&&snkBtn&=&new&SneakyButton();&&&&&&&&&snkBtn-&autorelease();&&&&&&&&&snkBtn-&initWithRect(CCRectZero);&&&&&&&&&&snkBtn-&setIsHoldable(true);&&&&&&&&&&SneakyButtonSkinnedBase&*sbsb&=&SneakyButtonSkinnedBase::create();&&&&&&&&&&&&&&&&&&sbsb-&setDefaultSprite(CCSprite::create(&nor.png&));&&&&&&&&&&&&&&&&&&sbsb-&setPressSprite(CCSprite::create(&tou.png&));&&&&&&&&&&&&&&&&&&sbsb-&setActivatedSprite(CCSprite::create(&tou.png&));&&&&&&&&&sbsb-&setPosition(CCPointMake(size.width-buttonRadius,buttonRadius));&&&&&&&&&sbsb-&setButton(snkBtn);&&&&&&&&&this-&addChild(sbsb);&&&&&&&&&&this-&scheduleUpdate();&&&&&&&&&bRet&=&true;&&&&&}&while&(0);&&&&&return&bR&}&
& 我们不需要设置按钮的半径属性了,因为SneakyButtonSkinnedBase类会使用提供的按钮图片来确定按钮半径的大小
接下来我们在游戏中添加摇杆
bool&InputLayer::init()&{&&&&&bool&bRet&=&false;&&&&&do&{&&&&&&&&&&CCSize&size&=&CCDirector::sharedDirector()-&getWinSize();&&&&&&&&&&float&buttonRiadus&=&75;&&&&&&&&&&snkJs&=&new&SneakyJoystick();&&&&&&&&&snkJs-&autorelease();&&&&&&&&&&snkJs-&initWithRect(CCRectMake(0,0,buttonRiadus,buttonRiadus));&&&&&&&&&&&&&&&&&&snkJs-&setAutoCenter(true);&&&&&&&&&&&&&&&&&&&snkJs-&setHasDeadzone(true);&&&&&&&&&&&&&&&&&&snkJs-&setDeadRadius(15);&&&&&&&&&&SneakyJoystickSkinnedBase&*sjssb&=SneakyJoystickSkinnedBase::create();&&&&&&&&&sjssb-&setPosition(CCPointMake(buttonRiadus*1.5,1.5*buttonRiadus));&&&&&&&&&&&&&&&&&&sjssb-&setBackgroundSprite(CCSprite::create(&handle1.png&));&&&&&&&&&&&&&&&&&&sjssb-&setThumbSprite(CCSprite::create(&handle2.png&));&&&&&&&&&sjssb-&setJoystick(snkJs);&&&&&&&&&this-&addChild(sjssb);&&&&&&&&&this-&scheduleUpdate();&&&&&&&&&bRet&=&true;&&&&&}&while&(0);&&&&&return&bR&}&
&完成摇杆的添加 &接下来要实现摇杆事件的监听&
void&InputLayer::update(ccTime&time)&{&&&&&&&CCPoint&velocity&=&ccpMult(snkJs-&getVelocity(),&800);&&&&&if&(velocity.x&!=&0&&&&velocity.y&!=&0)&{&&&&&&&&&CCLog(&x=%f,y=%f&,&velocity.x,&velocity.y);&&&&&}&}&
接下来一章将开发一个小游戏,如有问题,请提出
本教程根据Cocos2d教程翻译过来
使用的cocos2d-x版本为2.02
&本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)}

我要回帖

更多关于 cocos2d 使用音效 的文章

更多推荐

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

点击添加站长微信