cocos2dx 植物大战僵尸 5 塔基Terrain的更新
void LevelLayer::loadZombiePath()
{auto groupGroup = m_pTiledMap->getObjectGroup("zombie path");auto &objects = groupGroup->getObjects();
//对对象进行解析,cocos2dx的对象是Value,所以需要按照一定格式解析for (const auto& object : objects){ZombiePath*zombiePath = new ZombiePath();const auto &dict = object.asValueMap();auto x = dict.at("x").asInt();auto y = dict.at("y").asInt();auto properties = dict.at("properties").asValueMap();auto points = dict.at("polyline").asValueVector();for (const auto& dict : points){const auto&point = dict.asValueMap();auto realX = x + point.at("x").asInt();auto realY = y + point.at("y").asInt();zombiePath->points.push_back(Point(realX,realY));}zombiePath->row = properties.at("row").asInt();m_zombiePathVec.push_back(zombiePath);}
}
void LevelLayer::makeTerrainCallback(Terrain*terrain)
{//检测该地形在第几行auto rect = terrain->getBoundingBox();for (auto zombiePath : m_zombiePathVec){const auto& points = zombiePath->points;auto row = zombiePath->row;for (int i = 0;i < points.size() - 1;i++){auto pos1 = points.at(i);auto pos2 = points.at(i + 1);if (rect.intersectLine(pos1,pos2)){m_terrains[row].push_back(terrain);//添加到实体层auto layer = this->getEntityLayer();layer->addChild(terrain);}}}
}
至于那个intersectLine,这个不是cocos2dx的函数,是我自己加上的,因为SDL有着对应的实现,为SDL_IntersectRectAndLine()
cocos2dx 植物大战僵尸 5 塔基Terrain的更新相关推荐
- cocos2dx 植物大战僵尸 17 路障僵尸
原版植物大战僵尸的路障是饰品,能阻挡一部分伤害,在路障掉落前路障僵尸是不会受伤的. 如下为个人头脑风暴. 路障僵尸使用装饰者的话,需要继承自ZombieBase,由于图片原因,所以内部需要有一个普通僵 ...
- cocos2dx 植物大战僵尸 18 土豆雷
土豆雷是我打植物大战僵尸时喜欢使用的植物,它能保证在开局时能快速地种植植物.今天就实现土豆雷. 土豆雷有一个准备时间,在准备时间完成前不具有任何攻击力.以后破土,能够炸死小范围的僵尸,之后土豆雷死亡. ...
- cocos2dx 植物大战僵尸 8 植物类和向日葵的小更新
这次实现容器类的植物,即睡莲和花盆 不过在写之前,需要重写下以前的Plant代码. /*植物类型*/ enum class PlantType {Common,//普通类植物Vessel,//容器类植 ...
- cocos2dx 植物大战僵尸 22 寒冰射手
寒冰射手是我目前感觉比较难的植物,因为这个植物的子弹会给僵尸一个减速的debuff的,而这个debuff对有的僵尸 起作用,比如一般的僵尸,而对带有报纸的僵尸或者一些特殊的僵尸也是不会减速的,所以饰品 ...
- cocos2dx 植物大战僵尸 10 铲子的实现
铲子的作用是移除植物,而且铲子是和卡片互斥的,即点击了卡片,再点击铲子时会取消卡片的选中,反之亦然,接下来看看铲子的实现吧 class Shovel : public Entity { private ...
- cocos2dx 植物大战僵尸 20 卷心菜投手
在实现卷心菜投手前,需要对以前的代码进行稍微地调整.因为以前仅仅实现了豌豆射手,所以不需要关注第一个僵尸的位置,而卷心菜投手就不同了,它是锁定第一个最靠近的僵尸,然后进行攻击的,所以需要对僵尸进行x轴 ...
- PC休闲游戏~植物大战僵尸-植物连连看v1.0正式发布啦(更新iPhone版本)!
11.29: 又稍微花了一些时间制作了HD的iPad版本,不过提交app store审核失败了,侥幸看来真的只有一次啊 -增加计分(done) -增加关卡选择(done) 6.14: 看到卖的很悲惨, ...
- C++开源游戏推荐,植物大战僵尸(Cocos2dx开源项目)
声明:项目非本人原创,仅仅分享链接! 声明:项目非本人原创,仅仅分享链接! 声明:项目非本人原创,仅仅分享链接! 原创请参见: C++ 重制植物大战僵尸(Cocos2dx开源项目)_尔灵尔亿的博客-C ...
- Python开发植物大战僵尸游戏(附github项目地址)
今天给大家分享一个仿<植物大战僵尸>的小游戏开发案例. 开发思路 引入需要的模块,配置图片路径,设置界面宽高背景颜色,创建游戏主入口. #1引入需要的模块 import pygame im ...
最新文章
- 图说:Windows 8使用搜索,快速开启应用
- async [ə'zɪŋk] 函数
- c语言编译器内部错误,C++致命错误C1001:编译器中发生内部错误
- 双linux grub rescue,Grub Rescue修复方法
- 有关nginx upstream的几种配置方式
- python3 os模块相关方法
- python绘图数字_绘制一个绘图,其中Yaxis文本数据(非数字)和Xaxis数字d
- cmd指令大全指令_数控加工中心编程技巧及指令大全,请转给需要的数控人!
- 【DFS】LeetCode 52. N-Queens II
- 【前端】数组元素过滤
- 385.迷你语法分析器
- 你真的了解LinkedBlockingQueue的put,add和offer的区别吗
- [维修案例] 艾美特电风扇(FS4085R)不能调风量维修
- 解决刷新页面Vuex数据丢失问题
- 问佛----如果浮躁了,静下来看看
- word删除分页符的两种方法
- 深度学习-活体检测发展之数据篇(二)
- 印度尼西亚通过新区块链项目改善其航运产业
- 「经济读物」牛奶可乐经济学
- 什么是区块链,区块链又是什么?