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);
}
}

格子地图 像素坐标 地图坐标 转化

/** * 像素坐标转换为地图坐标 * */ public SpaceToTiled(point: egret.Point): egret.Poin...
  • W_han__
  • W_han__
  • 2016年10月09日 11:31
  • 1053

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

直接进入主题,公式如下 this.cellXCount = tmxMap.getMapSize().width; this.cellYCount = tmxMap.getMapSize().heig...
  • jianglong0156
  • jianglong0156
  • 2016年09月29日 11:29
  • 988

cocos2dx使用TiledMap创建斜45度地图场景

         做游戏,场景是一个很重要的部分,如果缺少这一步,很难做出好的游戏,对于cocos2dx来说,有很多2D的地图编辑器可以用,效果都还可以,其中Tiled是支持的比较好...
  • zhanghefu
  • zhanghefu
  • 2014年03月30日 10:04
  • 11254

45度角地图--地图绘制

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

用cocos2dx开发斜45度社交游戏(一)地图的设计

 无论什么项目的开发都要有一定的技术积累和实施步骤,就像楼房的建设也是从最基本的地基开始的,地基打不好,大楼盖装饰的再漂亮也只是一个失败的作品。好吧,闲话还是少说,来点实际的,先来介绍一下此系列...
  • zhanghefu
  • zhanghefu
  • 2014年03月23日 15:52
  • 2164

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

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

一种tile地图的组合算法

A Bitwise Method For Applying Tilemaps Posted on January 26, 2010 A technique for auto...
  • u013300329
  • u013300329
  • 2015年05月31日 20:43
  • 955

关于45°角度地图坐标的计算原理 - LVin_A

首先贴出代码,下面的代码是将屏幕点击的坐标转换成45°角度地图中的坐标。 -(CGPoint) tilePosFromLocation:(CGPoint)location tileMap:(CCTMX...
  • ybhjx
  • ybhjx
  • 2016年01月14日 20:12
  • 1309

cocos2dx使用TiledMap模拟3D地图场景----斜45度2D地图的靠墙直线移动

基于cocos2dx引擎的第三人称射击游戏,角色使用3D模型,地图采用2.5D。  定制地图编辑系统抛开不谈,这里最大可能的挖掘现有工具TiledMap的潜力,完成超2.5D地图的实现。  使用2...
  • hanbingfengying
  • hanbingfengying
  • 2017年01月24日 11:10
  • 1667

斜45度地图简介、坐标系转换以及数据碰撞

手机平台上开发斜45度地图系统的游戏,相信做惯了正面俯视的开发者刚接触总很不习惯。所谓斜45度游戏,也就是常说的2.5D游戏,用斜方向俯视的角度来增强立体感的一种技术。这种技术在PC平台上早就流行了,...
  • ybhjx
  • ybhjx
  • 2016年01月14日 23:17
  • 1652
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:45度角Tile地图通过具体位置获得地图的行列数详解
举报原因:
原因补充:

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