【原创】cocos2dx实战游戏开发之【捕鱼达人】---实体类(鱼,大炮)

              【捕鱼达人】游戏实战开发之实体类的实现

   

   大家好,我是Lampard!!!

   今天迎来捕鱼达人系列的第三篇博客更新,希望大家多多支持。

 

   今天要实现的是实体类(鱼,大炮)

 

(一)鱼类的实现

    首先我们需要确定这些鱼要做些什么,首先肯定是需要它们会游泳,而游泳又分为两个部分:(1)是精灵本身位置方面需要移动(2)需要鱼本身播放自己游动的动作。这样才能看起来有一个动起来的效果。而后在游戏的时候,当我们的子弹射中鱼,被射中的鱼则要停止所有的动作,然后播放一个被捕捉的动画,然后回收这个精灵。

   所以说我们要定义三个函数:分别是播放游泳动画,移动锚点位置,以及播放被捕捉的动画

 (1)播放游泳动画

   由于我们在之前已经建立好了动画创建器并把鱼类的plist文件加载进了帧缓存中。所以我们只需要调用我们的动画创建器找到相应的精灵帧就可以了。

CCRepeat* Fish::Swimming()  {

	String* theName = String::createWithFormat("fish0%d_",num);  // 第几条鱼
	Animate* action = ActionTool::animationWithFrameName(theName->getCString(), -1, 0.15);
	CCRepeat* swimming = CCRepeat::create(action, 5);            // 重复游泳的动作
	return swimming;
}

   因为播放完一个“游泳”的动画只用0.15秒,而鱼要游完整个界面需要大概0.8秒,所以我们就使用Repeat*重复鱼的动作5次。

  

  (2)移动鱼的位置

    移动精灵的位置我们只需要简单的使用MoveTo* 方法就可以了。值得一提的是,为了增加游动的随机性,所以我们的终点的Y坐标是可以随机的设置,因为我们y轴的高度是720,所以我们就可以直接rand()%720,但是为了不着挡住下层的大炮,所以就提高100像素,rand()%620+100.

MoveTo * Fish::Going() {

	Vec2 point = Vec2(0, rand() % 620 + 100);        // 设置目标位置
	MoveTo * move = MoveTo::create(10, point);       // 移动到目标位置

	return move;
}

 

(3)播放被捕捉的动画

  这个跟游泳的动画播放一样,只不过需要在播放被捕捉的动画之前,首先要停止自身的所有动作

(不然被射中你还一直跑就不太好了对吧HHH)

CCRepeat*  Fish::BeCatched() {

	String* theName = String::createWithFormat("fish0%d_catch_",num);
	Animate* action = ActionTool::animationWithFrameName(theName->getCString(), -1, 0.15);
	CCRepeat* catching = CCRepeat::create(action, 1);

	return catching;
}

OK,我们的鱼类的实现就到此为止了。

至于如何初始化init这条鱼,大家可以参详一下我提供的代码,比较简单就不复述了。

 

(2)大炮类的实现

  同样的,我们需要想一想需要坦克实现什么功能。emmm想来想去好像都只是需要它播放“发射”动作而已,因为我们的子弹是独立创造的,并不关大炮的事情,所以我们的大炮就可怜的仅可以播放发射动作了。

CCRepeat* Shell::Shooting() {

	String* theName = String::createWithFormat("net_%d", num);
	Animate* action = ActionTool::animationWithFrameName(theName->getCString(), -1, 0.15);
	CCRepeat* shooting = CCRepeat::create(action, 1);
	return shooting;

}

 最后说一下我是如何在游戏层安放大炮的,因为我们这款游戏的x轴大小是1280像素,所以我就把它六等份安放5门大炮,每一门大炮负责自己的区域,就只有最中间的大炮需要负责自己左右两边的区域。

 所以最后大致就是长这样的:

3

 

OK,今天的博客就到这里,谢谢大家!!!

 

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页