Cocos2dx游戏开发系列笔记15.1:添加虚拟摇杆SneakyInput

懒骨头(http://blog.csdn.net/iamlazybone QQ:124774397 )


(现在csdn博客保存好像有问题)


(刚才都写完了要保存的时候,手欠点了浏览器的返回按钮,然后csdn的自动保存不好用,然后现在的这篇笔记是第二遍了T.T)
今天圣诞
骨头没跟哲哲出去浪漫
就猫在床上看着视频吃着水果零食啥的
旁边有骨头最喜欢的甘蔗
弄完这篇就吃去




SneakyInput:
一个开源项目,地址:https://github.com/Ntran013/SneakyInput 
用法参考笔记8:《战神传说》 






= 1 =
把Sneaky代码加上。




=2=
在单独的Layer层里,声明一个按钮和一个摇杆: 
public :
HudLayer();
bool init();


SneakyButton* mButtonA;
SneakyJoystick* mJoystick;


//void inputUpdate(float dt);
};
在GameScene里添加这个单独的Layer层: 
GameScene::GameScene()
{
mHudLayer = new HudLayer();
this->addChild(mHudLayer, 1);
mGameLayer = new GameLayer();
this->addChild(mGameLayer, 0);
init();
this->schedule(schedule_selector(GameScene::inputUpdate));
}
这个HudLayer控制层添加游戏逻辑层之上 
void GameScene::inputUpdate(float dt)
{
CCPoint> //std::cout << velocity.x << std::endl;


if (velocity.x >= 0.4f> velocity.y >= 0.4f> mGameLayer->mHero->walkWithDirection(velocity);
}> mGameLayer->mHero->idle();
}


if (attackInterval <= 0.0f) {
if (mHudLayer->mButtonA->getIsActive()) {
mGameLayer->mHero->attack();
attackInterval = 0.5f;
......
}
}
这个方法里,首先获取摇杆的速度,如果速度绝对值超过0.4,则相应这个动作,也就是让主角移动。 
然后判断mButtonA这个按钮是否被按下,如果是的话进行攻击。
这里面还用一个变量来控制攻击间隔:0.5秒进行一次攻击检测。


=4=
下面看下摇杆和攻击按钮的初始化方法:
在HudLayer里:
摇杆的初始化:
CCSpriteFrameCache*> CCSpriteFrameCache::sharedSpriteFrameCache();
cache->addSpriteFramesWithFile("UI.plist", "UI.png");


mJoystick = NULL;
mJoystick = new SneakyJoystick();
mJoystick->initWithRect(CCRectZero);// 用原点初始化
mJoystick->setAutoCenter(true);// 自动居中
mJoystick->setHasDeadzone(true); // 设置无效
mJoystick->setDeadRadius(10); // 设置无效区域的半径
SneakyJoystickSkinnedBase* jstickSkin = new SneakyJoystickSkinnedBase();
jstickSkin->autorelease();
jstickSkin->init();
jstickSkin->setBackgroundSprite(CCSprite::createWithSpriteFrameName("JoyStick-base.png"));
jstickSkin->setThumbSprite(CCSprite::createWithSpriteFrameName("JoyStick-thumb.png"));
//jstickSkin->getThumbSprite()->setScale(0.5f);
jstickSkin->setPosition(ccp(50, 50));
jstickSkin->setJoystick(mJoystick);
this->addChild(jstickSkin);
攻击按钮的初始化 
mButtonA = NULL;
mButtonA = new SneakyButton();
mButtonA->initWithRect(CCRectZero);
mButtonA->setIsToggleable(false);
mButtonA->setIsHoldable(true);
SneakyButtonSkinnedBase*> btnASkin->autorelease();
btnASkin->init();
btnASkin->setPosition(ccp(430, 50));
btnASkin->setDefaultSprite(CCSprite::createWithSpriteFrameName("button-default.png"));
btnASkin->setPressSprite(CCSprite::createWithSpriteFrameName("button-pressed.png"));
btnASkin->setActivatedSprite(CCSprite::createWithSpriteFrameName("button-activated.png"));
//btnASkin->setDisabledSprite(CCSprite::createWithSpriteFrameName("button-disabled.png"));
btnASkin->setButton(mButtonA);
this->addChild(btnASkin);
好了,摇杆用起来就这么简单,感谢原作者。




旁边pad正在放周立波主持的梦想秀




有个村子以卖甘蔗为生
但是没有路甘蔗就卖不出去
村子里死了好几条人命都是因为路的原因
或是因为陡
或是因为送医院不及时
正在修的一条几公里的路
政府出了十万村民凑了二十万还差小二十万
于是村里的妇女过来跳甘蔗舞
希望能圆梦给村子修一条路
好响的一次打脸!


------------------- 飞船起飞--------------------    
Cocos2dx游戏开发系列笔记13:一个横版拳击游戏Demo-中
Cocos2dx游戏开发系列笔记12:一个横版拳击游戏Demo-上
Cocos2dx游戏开发系列笔记11:解刨《战神传说》完结篇
Cocos2dx游戏开发系列笔记10:解刨《战神传说》
Cocos2dx游戏开发系列笔记9:android手机上运行《战神传说》,并解决横竖屏即分辨率自适应问题
Cocos2dx游戏开发系列笔记8:开搞一个射击游戏《战神传说》//就个打飞机的
Cocos2dx游戏开发系列笔记7:一个简单的跑酷游戏《萝莉快跑》的消化(附下载)
Cocos2dx游戏开发系列笔记6:怎样让《萝莉快跑》的例子运行在vs和手机上
Cocos2dx游戏开发系列笔记5:继续润色《忍者飞镖射幽灵》
Cocos2dx游戏开发系列笔记4:怎样新加一个Scene类?
Cocos2dx游戏开发系列笔记3:牛刀小试->忍者飞镖射幽灵的Demo
Cocos2dx游戏开发系列笔记2:一个刚创建的cocos2dx中的demo里都有什么
Cocos2dx游戏开发系列笔记1:一个崭新的开始,cocos2dx2.2+ndkr9+Cygwin+vs2012游戏开发环境搭建
-------------------- 飞船降落-------------------- 


最后,骨头介绍一下陪在身边的哲哲(右边就是低调的哲哲)
哲哲,小名 YIYI ,手工爱好者,文艺范,手艺人,《YiYiの妙舍》创始人,很有自己想法。


 

                
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值