您好,登錄后才能下訂單哦!
【嘮叨】
如果手機設備沒有手柄、鍵盤的話,就只能靠觸摸屏幕來操作游戲了。
虛擬搖桿的作用就是在游戲中創建幾個按鍵來模擬手柄,通過觸控來實現上下左右的移動,以及***、跳躍、發大招等操作。
如下所示,有一個移動的虛擬搖桿,以及一個A鍵。
已有開源的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; } //
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。