cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第五步--button控制主角Jump&Crouch
说明:这里是借鉴:晓风残月前辈的博客。他是将泰然网的跑酷教程,用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记
这一步其中,我们给PlayScene中 加入两个button,让主角Jump and Crouch,button功能例如以下:
Jumpbutton。按下主角跳起来
Crouchbutton,按下主角下蹲,一直按着一直蹲,松开之后主角才站起来
这里用button包括头文件"cocos-ext.h"会遇到一点点问题,后面给出具体解决方法:
首先PlayScene.h中要包括头文件:
<span style="font-size:14px;">#include "cocos-ext.h"
USING_NS_CC_EXT;</span>
然后加入函数:
//Jump
void createJumpButton();
void jumpEvent(Ref* pSender,Control::EventType event); //Crouch
void createCrouchButton();
void crouchDown(Ref* pSender,Control::EventType event);
void crouchUp(Ref* pSender,Control::EventType event);
这里先解释一下,Crouch 有两个事件。我们在button中,要加入两个button事件,一个是按下。那么人物蹲下。然后button松开,人物又起来。两个事件。两个回调函数
然后实现:
void PlayScene::createJumpButton(){
auto visibleSize = Director::getInstance()->getVisibleSize(); auto jumpLabel = Label::create("Jump","Arail",30);
auto norBtn = Scale9Sprite::create("norBtn.png");
auto lightBtn = Scale9Sprite::create("lightBtn.png"); auto jumpBtn = ControlButton::create(jumpLabel,norBtn);
jumpBtn->setPosition(visibleSize.width-80,130);
jumpBtn->setBackgroundSpriteForState(lightBtn,Control::State::HIGH_LIGHTED); jumpBtn->addTargetWithActionForControlEvents(
this,
cccontrol_selector(PlayScene::jumpEvent),
Control::EventType::TOUCH_DOWN); this->addChild(jumpBtn);
}
void PlayScene::jumpEvent(Ref* pSender,Control::EventType event){
//SimpleAudioEngine::sharedEngine()->playEffect("jump.mp3");
m_runner->Jump();
} void PlayScene::createCrouchButton(){
auto visibleSize = Director::getInstance()->getVisibleSize(); auto crouchLabel = Label::create("Crouch","Arail",30);
auto norBtn = Scale9Sprite::create("norBtn.png");
auto lightBtn = Scale9Sprite::create("lightBtn.png"); auto crouchBtn = ControlButton::create(crouchLabel,norBtn);
crouchBtn->setPosition(visibleSize.width-100,80);
crouchBtn->setBackgroundSpriteForState(lightBtn,Control::State::HIGH_LIGHTED); //
crouchBtn->addTargetWithActionForControlEvents(
this,
cccontrol_selector(PlayScene::crouchDown),
Control::EventType::TOUCH_DOWN); //
crouchBtn->addTargetWithActionForControlEvents(
this,
cccontrol_selector(PlayScene::crouchUp),
Control::EventType::TOUCH_UP_INSIDE); this->addChild(crouchBtn);
}
void PlayScene::crouchDown(Ref* pSender,Control::EventType event){
//加入推断
if(m_runner->getState() == running){
m_runner->Crouch();
m_runner->setPosition(runner_posX,ground_hight+m_runner->getCrouchSize().height/2);
}
//SimpleAudioEngine::sharedEngine()->playEffect("crouch.mp3");
}
void PlayScene::crouchUp(Ref* pSender,Control::EventType event){
//否则,在跳起来的时候。点击crouch 松开之后,状态就会变成running
if(m_runner->getState() == crouch){
m_runner->stopAllActions();
m_runner->Run();
m_runner->setPosition(runner_posX,ground_hight+m_runner->getRunJumpSize().height/2);
}
}
然后在Runner.cpp中的init 函数中,还要记得
this->scheduleUpdate();,由于我们须要在update中推断起跳到最高点下落
然后在 PlayScene 的init函数也要加入 两个createbutton函数
那么生成,然后这里就会遇到问题:
那么这里我们须要在项目上右键到属性,【配置属性】->【C/C++】->【常规】->【附加包括文件夹】如图:
在最以下加入:$(EngineRoot)
然后相同在【连接器】->【输入】中加入libExtensions.lib 如图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWllZMTczNTMzODMy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
然后生成会说无法打开libExtensions.lib,那么就须要在这里下载libExtension.lib(不用积分)然后把它直接放在 [项目的文件夹下] / proj.win32 / Debug.win32中,然后就能够了。
我想应该有别的方法。假设有知道的麻烦告诉我一下。不胜感激
再次又一次生成,就能够啦
最终能够看到效果:
好啦,后面要開始准备金币和岩石阻碍啦。
。
。
个人愚昧观点。欢迎指正与讨论
cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第五步--button控制主角Jump&Crouch的更多相关文章
- cocos2d-x 3.0游戏实例学习笔记 《跑酷》 完结篇--源代码放送
说明:这里是借鉴:晓风残月前辈的博客,他是将泰然网的跑酷教程,用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...
- cocos2d-x 3.0游戏实例学习笔记 《跑酷》第一步--- 开始界面
说明:这里是平局:晓风残月前辈的博客.他是将泰然网的跑酷教程.用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...
- cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第三步---主角开跑&同一时候带着刚体
说明:这里是借鉴:晓风残月前辈的博客.他是将泰然网的跑酷教程.用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...
- cocos2d-x 3.0游戏实例学习笔记 《跑酷》第七步--物理碰撞检測(1)
说明:这里是借鉴:晓风残月前辈的博客,他是将泰然网的跑酷教程,用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...
- cocos2d-x 3.0游戏实例学习笔记 《跑酷》第四步--地图循环&主角加入动作
说明:这里是借鉴:晓风残月前辈的博客,他是将泰然网的跑酷教程,用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...
- cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第三步---编辑器(2)---更方便很多其它操作更像编辑器
/* 说明: **1.本次游戏实例是<cocos2d-x游戏开发之旅>上的最后一个游戏,这里用3.0重写并做下笔记 **2.我也问过木头本人啦.他说:随便写,第一别全然照搬代码:第二能够说 ...
- cocos2d-x 3.0游戏实例学习笔记 《跑酷》移植到android手机
说明:这里是借鉴:晓风残月前辈的博客.他是将泰然网的跑酷教程.用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...
- coco2d-x 3.0游戏实例学习笔记 《跑酷》 第二步---游戏界面&全新的3.0物理世界
说明:这里是借鉴:晓风残月前辈的博客,他是将泰然网的跑酷教程.用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写.并做相关笔记 ...
- cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第六步--金币&岩石加入而且管理
说明:这里是借鉴:晓风残月前辈的博客,他是将泰然网的跑酷教程,用cocos2d-x 2.X 版本号重写的,眼下我正在学习cocos2d-X3.0 于是就用cocos2d-X 3.0重写,并做相关笔记 ...
随机推荐
- PHP 中 include() 与 require() 的区别说明
引用文件的方法有两种:require 及 include.两种方式提供不同的使用弹性. require 的使用方法如 require("MyRequireFile.php"); . ...
- Django 外键ForeignKey中的on_delete
当你在Django中删除了一个有着外键关联的数据时,比如一个作者和他名下的所有的书的信息,书的外键是作者(一个作者可有好多本书),当你把作者的信息从数据库中删除时,Django提供了一下几个参数来对作 ...
- ssd运行过程中遇到的bug
1.出现以下错误: 没有添加环境变量: https://github.com/weiliu89/caffe/issues/4 可以看到当前PYTHONPATH不再ssd1里面,所以需要修改,修改之后就 ...
- oracle获取排序后的第一条信息
查询表table1里字段id小于10的所有数据,并且让数据根据id降序排列,然后得到第一条数据 select * from (select * from table1 where id<10 o ...
- 洛谷——P4053 [JSOI2007]建筑抢修
P4053 [JSOI2007]建筑抢修 小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者.但是T部落的基地里已经有N个建筑设施受到了严重的 ...
- wampsever修改数据库密码
①进入localhost中的mysql数据库 ②再进入mysql数据库中的user表 ③将user表中的三个root账号的密码全部改为你想要的密码(不需要经过MD5加密) ④保存后重新启动服务 如果在 ...
- MYSQL每日一学 - 时间间隔表达式
参考链接:https://dev.mysql.com/doc/refman/5.7/en/expressions.html Interval表达式(Temporal intervals)的使用 Int ...
- UVa 1599 理想路径(反向BFS 求最短路径 )
题意: 给定一个有重边有自环的无向图,n个点(2 <= n <= 100000), m条边(1 <= m <= 200000), 每条边有一个权值, 求从第一个点到n的最少步数 ...
- Android BGABadgeView:BGABadgeImageView以及BGABadgeRelativeLayout(4)
Android BGABadgeView:BGABadgeImageView以及BGABadgeRelativeLayout(4) 在附录文章5,6,7的基础上,写一个小例子说明BGABadge ...
- MBP 2018 & Mac keyboard shortcuts
MBP 2018 & Mac keyboard shortcuts https://support.apple.com/en-us/HT201236 delete key === Contro ...