Cocos2d-x 3.2 大富翁游戏项目开发-第八部分 角色按路径行走

  次阅读 作者:智能小宝 来源:互联网 2015-09-27 15:03 我要评论(0)

路径获得之后,我们就可以让角色按照路径行走了,当点击go按钮的时候,我们调用player的startGo()方法,传入的参数就是保存了路径的2个一维数组

void GameBaseScene::goButtonCallback(cocos2d::CCObject *pSender)

{

RouteNavigation::getInstance()->getPath(player1,3,canPassGrid,tiledRowsCount,tiledColsCount);

std::vector colVector = RouteNavigation::getInstance()->getPathCols_vector();

std::vector rowVector = RouteNavigation::getInstance()->getPathRow_vector();

for(int i=0;istartGo(rowVector,colVector);

}

.size();i++)>

给类RicherPlayer添加相应的startGo方法

void RicherPlayer::startGo(std::vector rowVector,std::vector colVector)

{

//获取游戏控制器RicherGameController,调用其中的startRealGo()方法,开始真正的角色行走

RicherGameController* rgController = RicherGameController::create();

addChild(rgController);

rgController->startRealGo(rowVector,colVector,this);

}

void RicherGameController::startRealGo(std::vector rowVector,std::vector colVector,RicherPlayer* richerPlayer)

{

currentRow = rowVector[0]; currentCol = colVector[0]; //获取第一个位置的行列值

nextRow =0; nextCol =0; //下一步的行列值

//创建上下左右的动作,并放入缓存

if(!AnimationCache::getInstance()->animationByName(left_animation))

{

AnimationCache::getInstance()->addAnimation(Animation::createWithSpriteFrames(richerPlayer->getAnim_left_vector(),playerGoPerFrameTime),left_animation);

}

if(!AnimationCache::getInstance()->animationByName(right_animation))

{

AnimationCache::getInstance()->addAnimation(Animation::createWithSpriteFrames(richerPlayer->getAnim_right_vector(),playerGoPerFrameTime),right_animation);

}

if(!AnimationCache::getInstance()->animationByName(down_animation))

{

AnimationCache::getInstance()->addAnimation(Animation::createWithSpriteFrames(richerPlayer->getAnim_down_vector(),playerGoPerFrameTime),down_animation);

}

if(!AnimationCache::getInstance()->animationByName(up_animation))

{

AnimationCache::getInstance()->addAnimation(Animation::createWithSpriteFrames(richerPlayer->getAnim_up_vector(),playerGoPerFrameTime),up_animation);

}

//从缓存中取得上下左右的动作,创建相应的动画

left = Animate::create(AnimationCache::getInstance()->animationByName(left_animation));

right =Animate::create( AnimationCache::getInstance()->animationByName(right_animation));

down =Animate::create(AnimationCache::getInstance()->animationByName(down_animation));

up = Animate::create(AnimationCache::getInstance()->animationByName(up_animation));

//retain 一下,引用计数加一,防止动画被清除

left->retain();

right ->retain();

down->retain();

up->retain();

//根据参数给相应变量赋值

_rowVector=rowVector;

_colVector=colVector;

_richerPlayer =richerPlayer;

stepHasGone = 0;//角色已经走了几步

stepsCount = _rowVector.size()-1;//取得路径需要走的步数,因为第一个是当前位置的行列,所以不计入步数

moveOneStep();//开始行走,先走一步,走完一步后,再走下一步

}

void RicherGameController::moveOneStep()

{

//获取下一步行列,计算同当前行列的差值

nextRow = _rowVector[stepHasGone+1];

nextCol = _colVector[stepHasGone+1];

int distanceRow = nextRow - currentRow;

int distanceCol = nextCol - currentCol;

MoveBy* moveBy; Repeat* repeate; Action* spawnAction;

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...