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

来源:未知 责任编辑:责任编辑 发表时间:2015-09-09 15:29 点击:

路径获得之后,我们就可以让角色按照路径行走了,当点击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);
}


 

 

给类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();//开始行走,先走一步,走完一步后,再走下一步
}
	
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • cocos2d-x学习笔记(19)--label 、label atlas
  • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
  • Cocos2d-x 2.0 之 Actions “三板斧” 之一
  • Cocos2d-x学习(一):HelloWorld
  • cocos2d-x学习笔记(18)--游戏打包(windows平台)
  • cocos2d 设置屏幕默认方向
  • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
  • cocos2d-x学习笔记(15)--地图的使用(TMX)
  • cocos2dx在xcode下开发,编译到android上(2)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1