Egret中使用TiledMap

本文介绍了如何在Egret游戏引擎中利用TiledMap来创建瓦片地图,并提供了TiledMap类的实现,包括地图数据的处理、像素坐标与地图坐标的转换、判断路径是否可以通过以及障碍点的标记。此外,还包含了绘制地图网格线和障碍点的方法。
摘要由CSDN通过智能技术生成

一、关于如何制作瓦片底图:http://www.skywind.me/blog/archives/427
二、ts中TiledMap类
/**
 *
 * @author 
 *
 */
'use strict';
module gtm{
    export class TiledMap {
        /**网格线 图层*/
        public lineScene: egret.Sprite = new egret.Sprite();
        /**障碍点 图层*/
        public pointScene: egret.Sprite = new egret.Sprite();
        public static PATH_UNKNOWN: number = -1;         //未知数据
        public static PATH_PASS: number = 0;            // 路径中 0 为可以通过
        public static PATH_BARRIER: number = 1;         // 路径中 1 为障碍
        public static PATH_TRANSLUCENCE: number = 2;    // 路径中 2 为半透明

        public TILE_WIDTH: number = 0;           // A*格子宽
        public TILE_HEIGHT: number = 0;          // A*格子高
        public MAP_WITDTH: number = 0;           // 地图的宽
        public MAP_HEIGHT: number = 0;           // 地图的高
        public MAP_X: number = 0;                // X坐标最大
        public MAP_Y: number = 0;                // Y坐标最大
        
        /**
         * 得到的地图数据是从0开始的
         * */
        public data: Array<any>;                 //地图数据
        
        /**
         * object层的数据
         * */
        public objectData:any;
        
        /**
         * 清空地图数据
         * */
        public dispose() {
            this.TILE_WIDTH = 0;
            this.TILE_HEIGHT = 0;
            this.MAP_WITDTH = 0;
            this.MAP_HEIGHT = 0;
            this.data = null;
        }
        
        /** 
         * 判断A*地图从标是否可以通过的路 true 为可以通过 
         */
        public isPass(checkX: number,checkY: number): boolean {
            try{
                var mapWidth: number = this.MAP_X;
                var mapHeight: number = this.MAP_Y;
                if(checkX < 0 || checkX >= mapWidth || checkY < 0 || checkY >= mapHeight) {
                    return false;
                }
                return this.data[checkY][checkX] != gtm.TiledMap.PATH_BARRIER ? true : false;
     
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值