예제 #1
0
        public object Clone()
        {
            var obj = (this.MemberwiseClone() as TiledMapDataContainer);

            obj.TiledData = (TiledData.Clone() as CozyTiledData);
            return(obj);
        }
예제 #2
0
    /// <summary>
    /// 初始化SceneTiled模块地图
    /// </summary>
    /// <param name="gObj">主GameObject</param>
    /// <param name="worldMapIndex">世界地图中的索引</param>
    public void Initlizate(GameObject gObj)
    {
        mainObj       = gObj;
        mainObj.name += "_" + WorldMapIndex;

#if UNITY_EDITOR
        if (MapDebug.DebugSceneTiled)
        {
            gObj.AddComponent <SceneTiledGizmo>();
        }
#endif
        gObj.transform.localScale = Vector3.one;
        gObj.transform.position   = WorldPosition;

        mapPoint = CoordinationConvert.SceneWorldToMapPoint(WorldPosition);

        //构造场景内的地块信息
        landTileds.Clear();
        int halfWidth  = LandTiled.halfTiledWidth;
        int halfHeight = LandTiled.halfTiledHeight;

        //        Vector3 orginPos = WorldPosition + new Vector3(halfSceneWidth - halfWidth,0);
        Vector3 orginPos = WorldPosition + new Vector3(halfSceneWidth, 0);

        for (int i = 0; i < SceneRow; i++)
        {
            int tiledRowIndex = i * SceneRow;
            for (int j = 0; j < SceneColumn; j++)
            {
                int tiledIndex = tiledRowIndex + j;
                //计算世界坐标中的位置
                float tiledX = halfWidth * j - halfWidth * i;
                float tiledY = -halfHeight * j - halfHeight * i;

                Vector3 position = new Vector3(tiledX, tiledY);
                position += orginPos;
                //构造记录映射
                TiledData td = new TiledData();
                //td.TiledId = ;
                td.SceneIndex = (byte)WorldMapIndex;
                td.Index      = tiledIndex;

                //实例土地
                LandTiled landTiled = new LandTiled(td);
                landTiled.WorldPosition = position;
                landTileds.Add(landTiled);

                MapCreater.Instance.LoadDel("Assets/Prefabs/LandSprite.prefab", obj =>
                {
                    landTiled.Initlizate(obj, this);
                });
            }
        }
    }
예제 #3
0
        protected override void Initialize()
        {
            var player = BuildPlayer(PLAYERSTARTX, PLAYERSTARTY);

            Scene.AddEntityToScene(player);

            //var obstacles = BuildObstacles();

            TiledData level = Parse(LevelName);

            var objectLayer = level.layers.FirstOrDefault(n => n.name == "Object Layer 1");
            var objects     = objectLayer.objects;

            var obstacles = objects.Where(n => n.gid == 15);
            var platforms = objects.Where(n => n.gid == 5);
            //var platforms = new List<TiledObject>();
            var doubleJumps = objects.Where(n => n.gid == 9);

            var i = 0;

            foreach (var obstacle in obstacles)
            {
                var obstacleEntity = new BaseEntity(SceneManager, "Obstacle" + i.ToString(), obstacle.x, obstacle.y);

                var renderComponent  = new RenderComponent(obstacleEntity, "atpButtHash", obstacle.width, obstacle.height);
                var physicsComponent = new PhysicsComponent(obstacleEntity, obstacle.width, obstacle.height);

                Scene.AddEntityToScene(obstacleEntity);

                i++;
            }

            i = 0;
            foreach (var platform in platforms)
            {
                var platformEntity = new BaseEntity(SceneManager, "Platform" + i.ToString(), platform.x, platform.y);

                var groundRender  = new RenderComponent(platformEntity, "Platform", platform.width, platform.height);
                var groundPhysics = new PhysicsComponent(platformEntity, platform.width, platform.height);

                Scene.AddEntityToScene(platformEntity);

                i++;
            }

            i = 0;
            foreach (var doubleJump in doubleJumps)
            {
                var doubleJumpEntity = new BaseEntity(SceneManager, "DoubleJump" + i.ToString(),
                                                      doubleJump.x, doubleJump.y);

                var renderComponent  = new RenderComponent(doubleJumpEntity, "atpSolid", doubleJump.width, doubleJump.height);
                var physicsComponent = new PhysicsComponent(doubleJumpEntity, doubleJump.width, doubleJump.height);

                Scene.AddEntityToScene(doubleJumpEntity);

                i++;
            }

            var physics = LoadPhysics();

            Scene.Physics = physics;

            base.Initialize();
        }
예제 #4
0
 public void Clear()
 {
     TiledData.Clear();
     ClearMessage(TiledData, new TiledClearMessageArgs());
 }
예제 #5
0
 public void Write(int x, int y, uint data)
 {
     TiledData.Modify(x, y, data);
     DataMessage(TiledData, new TiledDataMessageArgs(x, y, data));
 }
예제 #6
0
 public LandTiled(TiledData td)
 {
     this.tileMap = td;
 }
예제 #7
0
 public void Write(Stream WriteStream)
 {
     TiledData.Write(WriteStream);
 }
예제 #8
0
 public void Load(Stream LoadStream)
 {
     TiledData.Load(LoadStream);
 }
예제 #9
0
 public void Clear()
 {
     TiledData.Clear();
 }
예제 #10
0
 public void Change(int x, int y, uint data)
 {
     TiledData.Modify(x, y, data);
 }