Cocos2d-x在ubuntu上的开发环境搭建,请参考《Ubuntu18.04搭建Cocos2d开发环境》
在Linux上运行项目,请参考《在Linux上运行Cocos2d-x项目》
在游戏所在目录的Classes目录下创建以下两个文件:
KeyboardScene.h:
#include "cocos2d.h"
class KeyboardScene : public cocos2d::Layer{
public:
static cocos2d::Scene* createScene();
virtual bool init();
CREATE_FUNC(KeyboardScene);
};
KeyboardScene.cpp:
//
// Created by kyun on 20-3-19.
//
#include "KeyboardScene.h"
USING_NS_CC;
Scene* KeyboardScene::createScene() {
auto scene = Scene::create();
auto layer = KeyboardScene::create();
scene->addChild(layer);
return scene;
}
bool KeyboardScene::init() {
if( !Layer::init()){
return false;
}
// 创建一个精灵
auto sprite = Sprite::create("HelloWorld.png");
// 将精灵定位到场景中央
sprite->setPosition(this->getContentSize().width/2,this->getContentSize().height/2);
this->addChild(sprite,0);
// 创建键盘监听器
auto eventListener = EventListenerKeyboard::create();
// 定义键盘按下处理函数
eventListener->onKeyPressed = [](EventKeyboard::KeyCode keyCode, Event* event){
Vec2 loc = event->getCurrentTarget()->getPosition();
switch (keyCode){
// 按下向左箭头,或A键
case EventKeyboard::KeyCode ::KEY_LEFT_ARROW:
case EventKeyboard::KeyCode ::KEY_A:
// 将与事件绑定的精灵向左移,按一下,移一下
event->getCurrentTarget()->setPosition(--loc.x,loc.y);
break;
// 按下向右箭头,或D键
case EventKeyboard::KeyCode ::KEY_RIGHT_ARROW:
case EventKeyboard::KeyCode ::KEY_D:
// 将与事件绑定的精灵向右移,按一下,移一下
event->getCurrentTarget()->setPosition(++loc.x,loc.y);
break;
// 按下向上箭头,或W键
case EventKeyboard::KeyCode ::KEY_UP_ARROW:
case EventKeyboard::KeyCode ::KEY_W:
// 将与事件绑定的精灵向上移,按一下,移一下
event->getCurrentTarget()->setPosition(loc.x,++loc.y);
break;
// 按下向下箭头,或S键
case EventKeyboard::KeyCode ::KEY_DOWN_ARROW:
case EventKeyboard::KeyCode ::KEY_S:
// 将与事件绑定的精灵向下移,按一下,移一下
event->getCurrentTarget()->setPosition(loc.x,--loc.y);
break;
}
};
// 将事件监听器与精灵进行绑定
this->_eventDispatcher->addEventListenerWithSceneGraphPriority(eventListener,sprite);
}
修改根目录下的CMakeLists.txt文件:
# add cross-platforms source files and header files
list(APPEND GAME_SOURCE
Classes/AppDelegate.cpp
Classes/KeyboardScene.cpp
)
list(APPEND GAME_HEADER
Classes/AppDelegate.h
Classes/KeyboardScene.h
)
执行cmake命令:
~/Desktop/Games/MyGame/build/linux-build$ cmake ../..
编译源码:
~/Desktop/Games/MyGame/build/linux-build$ make -j 4
运行游戏:
~/Desktop/Games/MyGame/build/linux-build$ cd bin/MyGame
~/Desktop/Games/MyGame/build/linux-build/bin/MyGame$ ./MyGame
测试:
通过键盘WASD四个键或四个方向键来移动精灵。
谢谢阅读!