45度角Tile地图通过具体位置获得地图的行列数详解

原创 2013年12月04日 17:26:33
//45度角地图通过具体位置获得地图的行列数
CCPoint TileMapMove::convertto2d(float x,float y)
{
CCTMXTiledMap *tileMap=(CCTMXTiledMap*)this->getChildByTag(kTagTileMap);
//获取地图的宽高
int mapWidth=tileMap->getMapSize().width*tileMap->getTileSize().width;
int mapHeight=tileMap->getMapSize().height*tileMap->getTileSize().height;


double distanse,sin1,sin11,sin22,cos1;
//d2x,d2y保存传入点在地图上的行列值
int d2x,d2y;


    //菱形棱长比例系数(因为对角线之比是2:1,所以根据三角形定理,斜边比是sqrt(5.0)
double mystatic5=sqrt(5.0);
//所以地图格的棱长为(高的一半*棱长比例系数)
double mystatic=16*mystatic5;


if(x>mapWidth/2)
{
distanse=sqrt((x-mapWidth/2)*(x-mapWidth/2)+(mapHeight-y)*(mapHeight-y));


sin1=(mapHeight-y)/distanse;
cos1=(x-mapWidth/2)/distanse;


sin11=(sin1*2-cos1)/mystatic5;
d2y=distanse*5/4*sin11/mystatic;


sin22=(2*sin1+cos1)/mystatic5;
d2x=distanse*5/4*sin22/mystatic;
return ccp(d2x,d2y);
}
else
{
//AC的长度
distanse=sqrt((mapWidth/2-x)*(mapWidth/2-x)+(mapHeight-y)*(mapHeight-y));
//1 = 角ACE
sin1=(mapHeight-y)/distanse;
cos1=(mapWidth/2-x)/distanse;
//11 = 角ACD
sin11=(sin1*2-cos1)/mystatic5;
//sinADC = sin 2*CFO = 4/5
d2x=distanse*5/4*sin11/mystatic;
//22 = 角CAD
sin22=(2*sin1+cos1)/mystatic5;
d2y=distanse*5/4*sin22/mystatic;
return ccp(d2x,d2y);
}
}

相关文章推荐

Cocos2dx杂记:Tiledmap读取

瓦块地图编辑器Tiled在游戏制作中是比较通用的了,cocos2dx支持载入TiledMap,以cocos2d 3.x版本为例 1、加载瓦块地图: //读取 auto m_pTileM...
  • slaron
  • slaron
  • 2017年02月17日 11:31
  • 552

Cocos2d-JS tiledMap 45度角地图坐标计算

直接进入主题,公式如下 this.cellXCount = tmxMap.getMapSize().width; this.cellYCount = tmxMap.getMapSize().heig...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Html5斜45度地图+3D模型ARPG系列教程(1)-- 搭建开发环境

前言:本来做这个项目,本来是为了趁html5市场火热参与一下(几个月以前写的了),后面由于各种原因没有用上,但是前前后后还是花了一个多月的时间放在硬盘里感觉有点浪费了,所以出个教程帮一下想做Arpg游...
  • leeveel
  • leeveel
  • 2017年05月16日 18:05
  • 464

45度角地图--地图绘制

用的瓷砖是这个样子的,存放于Tile页面(tileWidth*tileHeight)中,定义常量  tileWidth=64;tileHeight=32;  绘制在画布上,定义常量  canva...
  • ybhjx
  • ybhjx
  • 2016年01月15日 12:00
  • 471

Tiled实现斜45度瓦片地图

Tiled实现斜45度瓦片地图 Androider1232014-06-20 09:52:451277 次阅读 首先是我最近在做的一个项目的需求,要做一个斜45度角的大地图,里面有...

Tiled实现斜45度瓦片地图

首先是我最近在做的一个项目的需求,要做一个斜45度角的大地图,里面有很多的建筑,会有人在里面走来走去。一个手指按住滑动可以拖动地图,两个手指按下可以调整地图的放大和缩小。   1、tile...

Libgdx专题系列:地图篇 斜45°地图

前面我们使用的都是矩形的图块, 然而在实际的使用中,经常会用到菱形的图块来进行地图绘制。   这里Libgdx也给我们提供了斜视角的地图绘制 IsometricTiledMapRenderer 用法...

游戏中45度地图的坐标转换

本站文章均为 ftyszyx 原创,转载务必在明显处注明: 原文链接: http://blog.csdn.net/ftyszyx/article/details/9020101 在游戏中,为了在...
  • ftyszyx
  • ftyszyx
  • 2013年06月04日 11:16
  • 2024

COCOS2D-X中45度地图通过位置获得对应行列数中的三角变换理解

晚上看COCOS2d-X的瓦片地图集这块,发现
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:45度角Tile地图通过具体位置获得地图的行列数详解
举报原因:
原因补充:

(最多只允许输入30个字)