TiledMap的使用
①// 调用TMXTiledMap的函数读取TileMap.tmx文件创建一个瓦片地图对象
_tileMap = TMXTiledMap::create("TileMap.tmx");
// 把地图的锚点和位置都设置为原点,这样可以使地图的左下角与屏幕的左下角对齐
_tileMap->setAnchorPoint(Vec2::ZERO);
_tileMap->setPosition(Vec2::ZERO);
// 将地图添加为当前层的子节点
this->addChild(_tileMap,-1);
②// 调用TMXTiledMap的getObjectGroup方法获取对象层
auto objects = _tileMap->getObjectGroup("Objects");
// 根据对象名称获取对象的信息
ValueMap map = objects->getObject("player");
// 获取地图中设置的player对象的x和y值
int x = map.at("x").asInt();
int y = map.at("y").asInt();
// 创建玩家精灵,并将地图中对象的x和y值作为玩家精灵对象出现的位置
_player = Sprite::create("player.png");
_player->setPosition(x, y);
// 将玩家精灵添加为地图的子节点
_tileMap->addChild(_player);
// 创建事件监听器
auto planeListener = EventListenerTouchOneByOne::create();
// 响应触摸事件函数
planeListener->onTouchBegan=[](Touch* touch, Event* event){return true;};
planeListener->onTouchEnded=[this](Touch* touch, Event* event){
// OpenGL坐标
Vec2 touchLocation = touch->getLocation();
// 相对Node的坐标
Vec2 nodeLocation = this->convertToNodeSpace(touchLocation);
// 镜像反转,使玩家面对移动的方向
if (_player->getPosition().x < nodeLocation.x) {
if(!_player->isFlippedX())
_player->setFlippedX(true);
}
else
{
if(_player->isFlippedX())
_player->setFlippedX(false);
}
// 重新设置玩家位置
_player->setPosition(nodeLocation);
// 调整视角中心位置让地图随玩家一起移动
this->setViewpointCenter(_player->getPosition());
};
// 添加场景优先事件监听器
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(planeListener, this);
// 把玩家作为视觉中心来显示,让地图随玩家一起移动
void HelloWorld::setViewpointCenter(Vec2 position){
// 让地图跟随精灵移动:超过屏幕中心的一半的时候需要移动
int x = MAX(position.x, _screenWidth/2);
int y = MAX(position.y, _screenHeight/2);
// 不让显示区域超出地图的边界
x = MIN(x, (_tileMap->getMapSize().width *
_tileMap->getTileSize().width-_screenWidth/2));
y = MIN(y, (_tileMap->getMapSize().height *
_tileMap->getTileSize().height-_screenHeight/2));
// 实际移动的位置坐标
Point actualPosition = Vec2(x, y);
// 屏幕中心位置坐标
Point centerOfView = Vec2(_screenWidth/2, _screenHeight/2);
// 计算中心位置和玩家位置两点之间的差值
Point viewPoint = centerOfView - actualPosition;
// 重新设置屏幕位置
this->setPosition(viewPoint);
}
TiledMap的使用相关推荐
- Cocos2d-xna : 横版战略游戏开发实验5 TiledMap实现关卡地图
Cocos2d-xna : 横版战略游戏开发实验5 TiledMap实现关卡地图 在前面的几篇中动手实验使用了CCSprite.CCScene.CCLayer.CCAction.CCMenu等coco ...
- java如何识别tiled地图_Egret学习-TiledMap使用
环境说明: 引擎版本:5.2.4 Egret Wing 4.1.6 2.新建一个游戏项目Tank 3.将上面包含tiled库的libsrc文件夹放置在 Egret 工程的父文件夹 /工作空间 ---- ...
- 转:瓦片地图TiledMap
标签:tiledMap 3.x cocos tmx tile 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://shahdza.bl ...
- cocos2dx使用TiledMap模拟3D地图场景----斜45度2D地图的靠墙直线移动
基于cocos2dx引擎的第三人称射击游戏,角色使用3D模型,地图采用2.5D. 定制地图编辑系统抛开不谈,这里最大可能的挖掘现有工具TiledMap的潜力,完成超2.5D地图的实现. 使用2D ...
- 【Cocos Creator实战教程(3)】——TiledMap(瓦片地图)组件
1. 前言 瓦片地图是由一张一张的正方形小图片拼接成的地图,例如炸弹人,QQ堂都是非常典型的瓦片游戏.瓦片地图(Tile Map) 不但生成简单,并且可以灵活的用于Cocos2d-x引擎.不论你的游戏 ...
- CocosCreator知识库amp;amp;lt;二amp;amp;gt;关于TiledMap的系统学习教程(阶段性更新)
CocosCreator知识库<二>关于TiledMap的系统学习教程<26/12/2017>(长期更新,看不懂先大致总体搞一遍,然后回头细看) ...
- Tiledmap基本使用教程
如果你是第一次使用tiledmap的朋友,那么这篇文章一定能给你带来一些帮助.相信大家都玩过飞行射击类游戏,游戏中不断有敌方飞机biubiu的飞向玩家,那么这些飞机不是随机出现,是可以用tiledma ...
- 4个方面入手 TiledMap 地图优化!W字干货分享
引言:如何进行 TiledMap 地图优化?开发者 Bool Chen 将分享一套行之有效的 TiledMap 地图优化方案,其中包括了渲染.解析.寻路方面. 当项目里的地图越来越庞大和复杂,一些性能 ...
- tiledmap 图块属性_tiledmap 可以在图块层的指定格子上添加Sprite吗
constructor(mapname:string, x:number, y:number){ super(); //显示登陆界面 this.tMap = new Laya.TiledMap() t ...
- Egret中使用TiledMap
一.关于如何制作瓦片底图:http://www.skywind.me/blog/archives/427 二.ts中TiledMap类 /**** @author **/ 'use strict'; ...
最新文章
- 高通为何46亿美元ADAS Veoneer Arriver
- [JOISC2014]バス通学
- JavaScript(循环)
- Android ViewPager实现多个图片水平滚动
- java读取excel数据_Java读取Excel内容(转)
- lintcode 最大子数组III
- 进程线程协程对比(通俗)
- JAVA 测试日期的不同显示格式
- vscode远程无法更新
- L1-006. 连续因子-PAT团体程序设计天梯赛
- java更改reader字体颜色,Java 修改 文件内容 and BufferedReader 乱码问题
- 自动刷新网页脚本_抢不到票?你离idol只差一个大麦抢票脚本。
- 仿王者荣耀HTML示例代码
- LoudMiner:伪装在VST软件中的跨平台挖矿软件
- 电商项目实战--收货地址相关
- 服务器修复工具,Microsoft .NET Framework 修复工具可用
- Style之flag标签
- solaris linux 计算磁盘容量 cyl alt sec
- 中国过氧化二异丙苯市场投资状况分析与前景趋势研究报告2022年版
- 亚马逊云科技re:Invent现场访谈:医疗健康行业的云上未来
热门文章
- 资源 | 一网打尽成语歇后语,GitHub新华字典数据库
- win10鼠标灵敏度怎么调_和平精英,灵敏度到底怎么调?小编视频来教你!
- Mac安装mysql 8.0.21
- 服务器搭建及微信开发
- 三问智能体,华为如何落地全场景智慧
- InnoDB存储引擎:锁
- 基于用户的协同过滤个性化音乐推荐系统毕业设计
- 东方甄选推独立App自立门户;西湖大学『强化学习数学基础』教材书稿;经典书籍『深入浅出设计模式』Python版代码;前沿论文 | ShowMeAI资讯日报
- php中vc14是什么意思,VC9、VC11、VC14、VC15是啥?
- java 名片通讯录,jsp实现通讯录系统