今天使用TiledMap制作一块地图,瓦片大小为32像素,瓦片数50*50,在(1,1)瓦片处放置一个对象层player
在cocos creator 2.3.0中将player对象打印出来的瓦片坐标为:(1,1)
像素坐标为(32,32),但是用TiledLayer的getPositionAt()方法获取的坐标却变成了(32,1536),
不应该是(32,32)吗,这个方法让player这个对象的坐标产生了什么变化吗,还是说我使用了player预制体资源导致了这种现象,求大佬解答。


代码如下:
SpawnPlayer:function(item){
let player = cc.instantiate(this.playerPrefab); //从预制体资源中读取player
this.objectGroup.node.addChild(player);
let pos = cc.v2(item.offset.x,item.offset.y); //获得player的像素坐标
let tiledPos = this.translateTiledPos(pos); //将player像素坐标转换为瓦片坐标
cc.log("player像素坐标:"+pos);
cc.log("player瓦片坐标:"+tiledPos);
let worldPos = this.floodLayer.getPositionAt(tiledPos);//将指定瓦片的像素坐标赋值给worldPos
cc.log("player世界坐标:"+worldPos);
},
translateTiledPos:function(pos){
let tiledSize = this.tiledMap.getTileSize(); //获得瓦片像素尺寸
let tiledX = Math.floor(pos.x/tiledSize.width); //player像素x坐标除以瓦片宽度向下取整
let tiledY = Math.floor(pos.y/tiledSize.height); //player像素y坐标除以瓦片高度向下取整
return cc.v2(tiledX,tiledY);
},
,所以坐标的y是32*48=1536。详情你可以参考这篇文章