cocos2dx番外篇——虚拟摇杆-创新互联

【唠叨】

站在用户的角度思考问题,与客户深入沟通,找到高青网站设计与高青网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站制作、成都网站建设、企业官网、英文网站、手机端网站、网站推广、申请域名、网络空间、企业邮箱。业务覆盖高青地区。

    如果手机设备没有手柄、键盘的话,就只能靠触摸屏幕来操作游戏了。

    虚拟摇杆的作用就是在游戏中创建几个按键来模拟手柄,通过触控来实现上下左右的移动,以及***、跳跃、发大招等操作。

    如下所示,有一个移动的虚拟摇杆,以及一个A键。

cocos2dx番外篇——虚拟摇杆

    已有开源的SneakyInput虚拟摇杆,开源地址:https://github.com/Ntran013/SneakyInput

    而这里博主则是将开源的SneakyInput进一步的修改,方便博主自身的使用。

【demo下载】

    https://github.com/shahdza/Cocos_LearningTest/tree/master/%E8%99%9A%E6%8B%9F%E6%91%87%E6%9D%86SneakyInput


【虚拟摇杆】

1、说明

    SneakyInput是一个开源的项目,而我们只需要修改摇杆使用的图片、按钮图片,以及位置即可。

    所以,只要修改Sneaky类中标注的 "//-- need modify start --" 部分,将虚拟摇杆的按钮图片改成你自己的图片即可。

2、使用方法

    (1)将 Sneaky.h 头文件包含到你的Game.h类中

    (2)在 Game.cpp 的初始化函数 init()里添加虚拟摇杆即可。

                Sneaky* sneaky = new Sneaky();

                this->addChild(sneaky,1,999);

    (3)移动和按钮一般在游戏Game类的update()中进行。

    (4)移动:

            //获得方向向量,dv为标准化向量,即长度为1.

            CCPoint dv = sneaky->joystick->getVelocity();

            //人物移动

            sp->setPosition( sp->getPosition() + dv );

    (5)按钮:

            //判断按钮A是否被按下

            sneaky->buttonA->getIsActive()

3、代码举例

//
	bool flag = false; //是否在执行按键动作
	void Game::update(float dt) {
	
		CCNode* sp = this->getChildByTag(1);
		
		//移动
		int movespeed = 2;
		CCPoint dv = sneaky->joystick->getVelocity();
		sp->setPosition( sp->getPosition() + dv*movespeed );
		
		//按键
		if(sneaky->buttonA->getIsActive() && !flag ) {
			CCJumpBy* jump = CCJumpBy::create(0.5f,ccp(0,0),100,1); //原地跳跃
			CCCallFunc* func = CCCallFunc::create(this,callfunc_selector(Game::setFlag));
			sp->runAction( CCSequence::create(jump, func, NULL) );
			flag = true;
		}
	}
	void Game::setFlag() { flag = false; }
//

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页标题:cocos2dx番外篇——虚拟摇杆-创新互联
标题链接:http://pwwzsj.com/article/dppijd.html