【原创】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,今天的博客就到这里,谢谢大家!!!

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lampard杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值