CocosCreator c++ 实践与利用
用cocosCreator 制作一款简易的游戏。 史莱姆跳跃,碰到星星,然后星星+1.
上一章显示的是如果使用cocosCreator的基本应用。这一章是CocosCreator的稍微复杂应用。
参考cocosCreator 教程 js里的游戏 用C++写一款 游戏:
1.看似简单,仔细做就不简单了。 首先史莱姆是没有脚的,所以只能一跳一跳的移动。所以在行走的时候要保持跳跃。 当然这个是没有物理引擎的。 需要让史莱姆 的跳跃频率不同。
MoveBy() 通过设置值来确定移动的方向,与距离。不是MoveTo,这两个别的博客已经写满了。
auto myMoveBy = MoveBy::create(0.3f, Vec2(10, 190));
myMoveBy->startWithTarget(player);
//逆向上一个动作。
MoveBy *myMoveBy1=myMoveBy->reverse();
//由快向慢
ActionEase *actionEase = EaseOut::create(myMoveBy,2);
//由慢向快。
ActionEase *actionEase1 = EaseIn::create(myMoveBy1,2);
//一组动作。
ActionInterval *ac=Sequence::create(actionEase,actionEase1, NULL);
这样就可以模仿,类似有重力的动作了。 而大幅度跳跃动作。只要调整MoveBy参数就可以了。
当update()更新的时候,跳跃不能像 player 移动遍历一样,持续动作。否则叠加会飞出屏幕。因为跳跃在不断的叠加中。 你需要给跳跃写一个延迟。 ** 完成动作后再继续。
//aaa 设置在外层。
if(aaa>=35){
gameFMS->changeJump1();
aaa=0;
}
aaa++;
本来想找找键盘控制优先级问题。但是没有找到!!!。 不知道有没有意识到这个问题!我查了很多博客和书,对这个问题意识到的不多!!!!!
就是当按下A键的时候。如果快速按下D键和放下D键。 那么弹回A键的动作就会和按下D键发生冲突导致player停止运动。 并不能快速长按键盘切换。 所以只能给每一个键,做一个boolean值。
当按下D键的时候为true,那么A键的弹回就会没用。 反之亦然。
void ControlLayer::onKeyPressed(EventKeyboard::KeyCode keyCode, cocos2d::Event *event){
CCLOG("aaaaaa&&&&&&&&&&& %d",(int)keyCode);
switch((int)keyCode){
//D键
case 127:
this->schedule(schedule_selector(ControlLayer::onMoveKeyboard));
move=2;
aboolean=true;
break;
//A键
case 124:
this->schedule(schedule_selector(ControlLayer::onMoveKeyboard));
move=1;
aboolean1=true;
break;
case 59:
gameFMS->changeJump();
break;
case 6:
toMenu1Layer();
break;
};
}
void ControlLayer::onKeyReleased(EventKeyboard::KeyCode keyCode