cocos2dx 植物大战僵尸 8 植物类和向日葵的小更新
2017-05-28 22:20
856 查看
这次实现容器类的植物,即睡莲和花盆
不过在写之前,需要重写下以前的Plant代码。
然后在Plant添加属性m_plantType,表示当前的植物类型,和m_pVesselPlant,这个是为了跟随睡莲运动添加的属性
看上面的代码,是所有植物通用的方法,如果植物有特定的需求的话,调用updateHook()即可
然后需要改变向日葵和双生向日葵的代码
在向日葵和双生向日葵中的updateHook中,用于绘图的更新和技能的释放
不过在写之前,需要重写下以前的Plant代码。
/*植物类型*/ enum class PlantType { Common,//普通类植物 Vessel,//容器类植物 };这个是植物类型,目前仅仅有一般性植物和容器类植物,以后也可能会再添加
然后在Plant添加属性m_plantType,表示当前的植物类型,和m_pVesselPlant,这个是为了跟随睡莲运动添加的属性
virtual void update(float dt); //每次更新都会调用的钩子函数 virtual void updateHook(float dt) = 0; void setVesselPlant(Plant*plant);接着就是update的实现有所改变了
void Plant::update(float dt) { updateHook(dt); //跟随容器植物运动 if (m_pVesselPlant) { auto pos = m_pVesselPlant->getPosition(); auto size = m_pVesselPlant->getContentSize(); this->setPosition(pos + Point(0,-size.height/2)); } }
看上面的代码,是所有植物通用的方法,如果植物有特定的需求的话,调用updateHook()即可
然后需要改变向日葵和双生向日葵的代码
void SunFlower::updateHook(float dt) { //负责绘图的更新 //当前处于正常状态 if (m_curState == State::Normal) { m_elapsed += dt; //切换状态 if (m_elapsed >= this->getColdDownTime() - m_produceSunDuration) { m_curState = State::ProducingSun; //改变内部精灵位置 auto pos = m_pSprite->getPosition(); auto size = this->getContentSize(); m_pSprite->setPosition(pos - Point(0.f,size.height)); } } else if (m_curState == State::ProducingSun) { m_elapsed += dt; //恢复正常状态 if (m_elapsed >= this->getColdDownTime()) { m_elapsed = 0.f; m_curState = State::Normal; //改变内部精灵位置 auto pos = m_pSprite->getPosition(); auto size = this->getContentSize(); m_pSprite->setPosition(pos + Point(0.f,size.height)); //生产阳光这个是虚函数 this->productSun(); } } }
在向日葵和双生向日葵中的updateHook中,用于绘图的更新和技能的释放
void TwinSunflower::productSun() { //调用两次 for (auto i = 0;i < 2;i++) { SunFlower::productSun(); } }本节是为了下一节的容器植物作的小小改变。
相关文章推荐
- cocos2dx 植物大战僵尸 7 向日葵和双生向日葵
- 呵呵,植物大战僵尸被录制到了优酷,很惊讶
- cocos2dx 植物大战僵尸 19 读报僵尸
- IceMx.Mvc 我的js MVC 框架四、试水植物大战僵尸(雏形版)
- Photoshop绘制植物大战僵尸中的食人花
- 游戏辅助原理与制作第八课--------植物大战僵尸种植植物CALL的寻找思路
- 植物大战僵尸开发者访谈
- 【最大流】【NOI2009】植物大战僵尸
- 逆向实战干货,植物大战僵尸快速定位自动捡阳光Call,或者标志
- 【BZOJ 1565】 [NOI2009]植物大战僵尸
- 游戏辅助原理与制作第二课--------植物大战僵尸修改阳光(一)
- BZOJ 1565: [NOI2009]植物大战僵尸( 最小割 )
- 植物大战僵尸经典开发步骤
- 游戏辅助原理与制作第二课--------植物大战僵尸修改阳光(一)
- cocos2d-x 植物大战僵尸(6) 触摸植物卡的消息响应
- cocos2dx 植物大战僵尸 9 容器植物类
- 【原创】植物大战僵尸全解密---存档篇
- 【bzoj1565】[NOI2009]植物大战僵尸
- 植物大战僵尸经典开发步骤
- BZOJ1565 [NOI2009]植物大战僵尸(拓扑排序 + 最大权闭合子图)