[Cocos2d塔防游戏开发]Cocos2dx-3.X完成塔防游戏《王国保卫战》--防御塔(三)之初级炮塔
2015-10-24 22:29
477 查看
该章节主要介绍初级炮塔
与箭塔相比,箭塔一共需要只需要1-2张图片,除了弓箭手,塔是静止的,而炮塔相对比较复杂从图中我们可以看出,炮塔的动作序列比较复杂,所以只需要将一个个动画序列分清楚,好在我们用的现成的图片资源,只要一个个通过addchild添加进去即可,然后用动画序列播放。
首先重载shoot
void BaseArtilleryTower::shoot(float dt) { checkNearestMonster(); if(nearestMonster!=NULL && nearestMonster->getCurrHp() > 0) { auto firePosition = nearestMonster->baseSprite->getPosition() - this->getParent()->getPosition(); runAction(Sequence::create( CallFuncN::create(CC_CALLBACK_0(BaseArtilleryTower::fireAnimation,this)), CallFuncN::create(CC_CALLBACK_0(BaseArtilleryTower::fire,this,firePosition)) ,NULL)); } }当射程范围内有敌人时,按顺序执行这个序列
先是左边的炮手蹲下并上抛这个动作,然后是炮弹飞到炮筒的动画
void BaseArtilleryTower::filledAnimation() { leftShooter->runAction(Animate::create(AnimationCache::getInstance()->getAnimation(getName()+"leftShooter_throw"))); c4->runAction(Animate::create(AnimationCache::getInstance()->getAnimation(getName()+"c4"))); }之后执行fire将炮弹发射出去,基本原理和弓箭塔差不多,并且简单不少
void BaseArtilleryTower::fire(Point firePosition) { auto currBullet = ArtilleryTowerBullet(); auto shootVector = firePosition; Point highPoint = Point(shootVector.x,shootVector.y+200); ccBezierConfig bezier; bezier.controlPoint_1 = Point(currBullet->getPosition().x,currBullet->getPosition().y+200); bezier.controlPoint_2 = Point(shootVector.x,shootVector.y+200);; bezier.endPosition = shootVector; float endRotate; if(shootVector.x>currBullet->getPosition().x) endRotate = 180.0f; else endRotate = -180.0f; auto action = Spawn::create(BezierTo::create(1.0f, bezier),RotateTo::create(1.0f,endRotate),NULL); currBullet->setBulletAction(action); currBullet->shoot(); runAction(Sequence::create(DelayTime::create(1.0f), CallFuncN::create(CC_CALLBACK_0(BaseArtilleryTower::filledAnimation,this)), NULL)); currBullet = NULL; }
filledAnimation是右边的炮手和炮筒的动画这里就省略了
其中炮弹的动画与弓箭的动画区别就是旋转角度是转一圈,其他区别不大~
因为比较简单,这章就粗略介绍下
相关文章推荐
- Cocos2d-x 3.8.1学习之路:(2)从windows到android
- Cocos2D-x内存管理的原则
- Cocos2d-JS使用log方法控制台无法打印出结果
- Cocos2d-JS屏幕适配
- Cocos2d-x下Lua调用自定义C++类和函数的最佳实践
- android台 cocos2d-x 翻阅相册数据
- cocos2d-x项目目录梳理
- cocos-2d HelloWorld项目运行报错解决
- Protobuf2.6集成到cocos2dx(Android和ios平台)
- cocos2d-x-3.5 android 编译
- Cocos2d入门--3--小球运动
- Cocos2d-X采用CCScrollView创建滚动视图
- cocos2d平台游戏移到windows平台运行
- cocos2dx之EditBox
- cocos2dx-------------------------------------Speed && Follow
- cocos2d-x引擎目录结构分析
- Cocos2d入门--2--三角函数的应用
- Cocos2d-JS中的常见元素
- cocos2dx 的内存管理机制
- 永远的HelloWorld