Cocos Creator Tiledmap——入門知識整理

現在網上很多資料都比較舊了,某些api也失效了,故整理出這篇文章,方便自己複習和大家查資料用。
先貼上cocos creator中關於tiledmap的官網api文檔
http://www.cocos.com/docs/creator/api/classes/TiledMap.html

以下是通過開發實踐以及網上資料整理出的相關知識

·獲得圖層

//map: cc.TiledMap
var layer = this.map.getLayer('圖層名');

·圖塊、瓦片座標和像素座標


以上面的圖爲例

//獲取左上角瓦片座標爲(0,0)的圖塊的像素座標
var pos = layer.getPositionAt(0,0);

//獲得當前該圖塊的id,也就是gid(注意,這裏的id是從1開始的,與TiledMap Editor中顯示的不同,如果返回值爲0,則爲空)
var gid = layer.getTileGIDAt(0,0);

//將像素座標轉化爲瓦片座標,posInPixel:目標節點的position
getTilePos: function (posInPixel) {
    var mapSize = this.map.node.getContentSize();
    var tileSize = this.map.getTileSize();
    var x = Math.floor(posInPixel.x / tileSize.width);
    var y = Math.floor((mapSize.height - posInPixel.y) / tileSize.height);
    return cc.p(x, y);
},

·編寫障礙物思路
有了獲取圖塊id和像素座標轉換成瓦片座標的方法,我們可以編寫出障礙物的簡單邏輯,基本思路如下
- 利用TiledMap Editor創建障礙物圖層,畫出障礙物
- 通過腳本獲取該圖層
- 獲取控制對象下一刻移動的座標,將其轉換成瓦片座標,如果getTileGIDAt(瓦片座標)的值不爲0,說明對象將要移動的位置有障礙物,不做移動處理

//移動的邏輯可以這麼寫
var layer = this.map.getLayer('障礙物層');
var mToX = ...;//移動位置x座標
var mToY = ...;//移動位置y座標
if (layer.getTileGIDAt( this.getTilePos(cc.p(mToX,mToY)))) {

} else {
    this.node.x = mToX;
    this.node.y = mToY;
}

先更這麼多吧,未完待續。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章