diff --git a/DungeonShooting_Godot/resource/map/tileSet/TileSet2/TileSet.json b/DungeonShooting_Godot/resource/map/tileSet/TileSet2/TileSet.json
index 63d531e..5072e0c 100644
--- a/DungeonShooting_Godot/resource/map/tileSet/TileSet2/TileSet.json
+++ b/DungeonShooting_Godot/resource/map/tileSet/TileSet2/TileSet.json
@@ -307,73 +307,57 @@
"F": {},
"M": {},
"T": {
- "17": [
- 176,
- 48
- ],
"80": [
176,
0
],
- "20": [
- 128,
- 48
- ],
"272": [
128,
0
],
- "144": [
- 0,
- 0
- ],
- "176": [
- 16,
- 0
- ],
- "184": [
- 32,
- 0
- ],
- "152": [
- 48,
- 0
- ],
- "341": [
- 144,
- 32
- ],
"336": [
160,
0
],
+ "21": [
+ 144,
+ 48
+ ],
+ "20": [
+ 128,
+ 48
+ ],
+ "17": [
+ 176,
+ 48
+ ],
"81": [
176,
32
],
- "273": [
- 144,
- 48
- ],
"276": [
128,
16
],
- "340": [
- 80,
- 16
+ "341": [
+ 144,
+ 32
],
"337": [
96,
16
],
+ "85": [
+ 96,
+ 32
+ ],
"277": [
80,
32
],
- "85": [
- 96,
- 32
+ "340": [
+ 80,
+ 16
]
},
"TerrainType": 1
diff --git a/DungeonShooting_Godot/scene/test/TestTerrain2x2.tscn b/DungeonShooting_Godot/scene/test/TestTerrain2x2.tscn
index 2619f48..a9fc9a8 100644
--- a/DungeonShooting_Godot/scene/test/TestTerrain2x2.tscn
+++ b/DungeonShooting_Godot/scene/test/TestTerrain2x2.tscn
@@ -115,7 +115,7 @@
[sub_resource type="TileSet" id="TileSet_ii6g3"]
terrain_set_0/mode = 1
terrain_set_0/terrain_0/name = "Terrain 0"
-terrain_set_0/terrain_0/color = Color(0.5, 0.34375, 0.25, 1)
+terrain_set_0/terrain_0/color = Color(0.501961, 0.345098, 0.25098, 1)
sources/0 = SubResource("TileSetAtlasSource_23gwl")
[node name="TestTerrain2x2" type="Node2D"]
diff --git a/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetSplit.cs b/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetSplit.cs
index 7ae9209..394b86c 100644
--- a/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetSplit.cs
+++ b/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetSplit.cs
@@ -109,21 +109,31 @@
_tileSet.AddPhysicsLayer();
_tileSet.SetPhysicsLayerCollisionLayer(0, PhysicsLayer.Wall);
_tileSet.SetPhysicsLayerCollisionMask(0, PhysicsLayer.None);
- Debug.Log("GetPhysicsLayersCount: " + _tileSet.GetPhysicsLayersCount());
- //地形层 0
- _tileSet.AddTerrainSet();
- _tileSet.SetTerrainSetMode(0, TileSet.TerrainMode.CornersAndSides);
- _tileSet.AddTerrain(0);
-
+
//Source资源
- foreach (var tileSetSourceInfo in _tileSetInfo.Sources)
+ for (var sourceIndex = 0; sourceIndex < _tileSetInfo.Sources.Count; sourceIndex++)
{
+ var tileSetSourceInfo = _tileSetInfo.Sources[sourceIndex];
+ var terrainInfo = tileSetSourceInfo.Terrain;
+
+ //地形层
+ _tileSet.AddTerrainSet();
+ _tileSet.AddTerrain(sourceIndex);
+ if (terrainInfo.TerrainType == 0) //3x3地形
+ {
+ _tileSet.SetTerrainSetMode(sourceIndex, TileSet.TerrainMode.CornersAndSides);
+ }
+ else //2x2地形
+ {
+ _tileSet.SetTerrainSetMode(sourceIndex, TileSet.TerrainMode.Corners);
+ }
+
var tileSetAtlasSource = new TileSetAtlasSource();
_tileSet.AddSource(tileSetAtlasSource);
//纹理
var image = tileSetSourceInfo.GetSourceImage();
tileSetAtlasSource.Texture = ImageTexture.CreateFromImage(image);
-
+
var size = image.GetSize() / GameConfig.TileCellSize;
//创建cell
for (var i = 0; i < size.X; i++)
@@ -134,106 +144,113 @@
}
}
- var terrainInfo = tileSetSourceInfo.Terrain;
//初始化地形
- tileSetAtlasSource.InitTerrain(terrainInfo, 0, 0);
- //ySort
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 2), 23);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 2), 23);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 2), 23);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 2), 23);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 3), 23);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 3), 23);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 3), 23);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 3), 23);
-
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 3), 23);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 3), 23);
-
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 3), 23);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 3), 23);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 3), 23);
-
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(0, 0), 7);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(1, 0), 7);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(2, 0), 7);
- SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(3, 0), 7);
-
- //碰撞器
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 0), true);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 0), true);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 0), true);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 0), true);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(4, 0), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 0), true);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 0), true);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(7, 0), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 0), true);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 0), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(10, 0), true);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 0), true);
-
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 1), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 1), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 1), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 1), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(4, 1), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 1), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 1), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(7, 1), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 1), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 1), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 1), false);
-
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 2), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 2), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 2), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 2), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(4, 2), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 2), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 2), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(7, 2), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 2), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 2), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(10, 2), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 2), false);
-
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 3), true);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 3), true);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 3), true);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 3), true);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(4, 3), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 3), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 3), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(7, 3), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 3), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 3), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(10, 3), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 3), false);
-
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 4), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 4), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 4), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 4), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(4, 4), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 4), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 4), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(7, 4), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 4), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 4), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(10, 4), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 4), false);
-
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 2, new Vector2I(0, 0), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 2, new Vector2I(1, 0), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 2, new Vector2I(2, 0), false);
- SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 2, new Vector2I(3, 0), false);
+ tileSetAtlasSource.InitTerrain(terrainInfo, sourceIndex, 0);
+ if (sourceIndex == 0)
+ {
+ InitMainSourceData(terrainInfo, tileSetAtlasSource);
+ }
}
}
return _tileSet;
}
+ private static void InitMainSourceData(TileSetTerrainInfo terrainInfo, TileSetAtlasSource tileSetAtlasSource)
+ {
+ //ySort
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 2), 23);
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 2), 23);
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 2), 23);
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 2), 23);
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 3), 23);
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 3), 23);
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 3), 23);
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 3), 23);
+
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 3), 23);
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 3), 23);
+
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 3), 23);
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 3), 23);
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 3), 23);
+
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(0, 0), 7);
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(1, 0), 7);
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(2, 0), 7);
+ SetAtlasSourceYSortOrigin(terrainInfo, tileSetAtlasSource, 2, new Vector2I(3, 0), 7);
+
+ //碰撞器
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 0), true);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 0), true);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 0), true);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 0), true);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(4, 0), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 0), true);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 0), true);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(7, 0), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 0), true);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 0), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(10, 0), true);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 0), true);
+
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 1), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 1), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 1), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 1), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(4, 1), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 1), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 1), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(7, 1), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 1), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 1), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 1), false);
+
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 2), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 2), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 2), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 2), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(4, 2), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 2), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 2), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(7, 2), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 2), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 2), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(10, 2), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 2), false);
+
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 3), true);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 3), true);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 3), true);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 3), true);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(4, 3), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 3), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 3), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(7, 3), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 3), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 3), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(10, 3), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 3), false);
+
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(0, 4), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(1, 4), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(2, 4), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(3, 4), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(4, 4), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(5, 4), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(6, 4), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(7, 4), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(8, 4), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(9, 4), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(10, 4), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 1, new Vector2I(11, 4), false);
+
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 2, new Vector2I(0, 0), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 2, new Vector2I(1, 0), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 2, new Vector2I(2, 0), false);
+ SetAtlasSourceCollision(terrainInfo, tileSetAtlasSource, 2, new Vector2I(3, 0), false);
+ }
+
///
/// 设置地图块的 Y 排序原点。
///
diff --git a/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetTerrainInfo.cs b/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetTerrainInfo.cs
index aac6b37..96c8964 100644
--- a/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetTerrainInfo.cs
+++ b/DungeonShooting_Godot/src/framework/map/serialize/tileSet/TileSetTerrainInfo.cs
@@ -197,7 +197,7 @@
case Center | RightTop | LeftBottom | RightBottom: return 9;
//第三排
case Center | RightTop: return 10;
- case Center | LeftTop | RightBottom: return 11;
+ case Center | LeftTop | RightTop: return 11;
case Center | LeftTop: return 12;
}
}
@@ -301,7 +301,7 @@
case 9: return Center | RightTop | LeftBottom | RightBottom;
//第三排
case 10: return Center | RightTop;
- case 11: return Center | LeftTop | RightBottom;
+ case 11: return Center | LeftTop | RightTop;
case 12: return Center | LeftTop;
}
}
diff --git a/DungeonShooting_Godot/src/framework/map/tileSet/TerrainPeering.cs b/DungeonShooting_Godot/src/framework/map/tileSet/TerrainPeering.cs
index 073464a..939dd8e 100644
--- a/DungeonShooting_Godot/src/framework/map/tileSet/TerrainPeering.cs
+++ b/DungeonShooting_Godot/src/framework/map/tileSet/TerrainPeering.cs
@@ -90,37 +90,59 @@
tileData.Terrain = terrain;
var bit = keyValuePair.Key;
- if ((bit & LeftTop) != 0)
+ if (terrainInfo.TerrainType == 0) //3x3地形
{
- tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.TopLeftCorner, 0);
+ if ((bit & LeftTop) != 0)
+ {
+ tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.TopLeftCorner, 0);
+ }
+ if ((bit & Top) != 0)
+ {
+ tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.TopSide, 0);
+ }
+ if ((bit & RightTop) != 0)
+ {
+ tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.TopRightCorner, 0);
+ }
+ if ((bit & Left) != 0)
+ {
+ tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.LeftSide, 0);
+ }
+ if ((bit & Right) != 0)
+ {
+ tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.RightSide, 0);
+ }
+ if ((bit & LeftBottom) != 0)
+ {
+ tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.BottomLeftCorner, 0);
+ }
+ if ((bit & Bottom) != 0)
+ {
+ tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.BottomSide, 0);
+ }
+ if ((bit & RightBottom) != 0)
+ {
+ tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.BottomRightCorner, 0);
+ }
}
- if ((bit & Top) != 0)
+ else //2x2地形
{
- tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.TopSide, 0);
- }
- if ((bit & RightTop) != 0)
- {
- tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.TopRightCorner, 0);
- }
- if ((bit & Left) != 0)
- {
- tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.LeftSide, 0);
- }
- if ((bit & Right) != 0)
- {
- tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.RightSide, 0);
- }
- if ((bit & LeftBottom) != 0)
- {
- tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.BottomLeftCorner, 0);
- }
- if ((bit & Bottom) != 0)
- {
- tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.BottomSide, 0);
- }
- if ((bit & RightBottom) != 0)
- {
- tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.BottomRightCorner, 0);
+ if ((bit & LeftTop) != 0)
+ {
+ tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.TopLeftCorner, 0);
+ }
+ if ((bit & RightTop) != 0)
+ {
+ tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.TopRightCorner, 0);
+ }
+ if ((bit & LeftBottom) != 0)
+ {
+ tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.BottomLeftCorner, 0);
+ }
+ if ((bit & RightBottom) != 0)
+ {
+ tileData.SetTerrainPeeringBit(TileSet.CellNeighbor.BottomRightCorner, 0);
+ }
}
}
}
diff --git a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/up/TileEditTerrain.cs b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/up/TileEditTerrain.cs
index 4f79c37..c84e4c8 100644
--- a/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/up/TileEditTerrain.cs
+++ b/DungeonShooting_Godot/src/game/ui/tileSetEditorTerrain/up/TileEditTerrain.cs
@@ -119,13 +119,13 @@
{
rootSize = UiNode.L_TerrainRoot.Instance.Size;
}
- else if (UiNode.L_TerrainTypeButton.Instance.Selected == 1)
+ else if (UiNode.L_TerrainTypeButton.Instance.Selected == 0)
{
- rootSize = UiNode.L_TerrainRoot.L_TerrainTexture4.Instance.Size;
+ rootSize = UiNode.L_TerrainRoot.L_TerrainTexture1.Instance.Size;
}
else
{
- rootSize = UiNode.L_TerrainRoot.L_TerrainTexture1.Instance.Size;
+ rootSize = UiNode.L_TerrainRoot.L_TerrainTexture4.Instance.Size;
}
Utils.DoFocusNode(ContainerRoot, Size, rootSize);
RefreshGridTrans();
@@ -172,33 +172,48 @@
private void DoClearCell()
{
- UiNode.UiPanel.TerrainGrid3x3.ForEach(cell =>
+ if (UiNode.UiPanel.EditorPanel.TileSetSourceIndex == 0)
{
- var terrainCell = (TerrainCell)cell;
- terrainCell.ClearTerrainBitData();
- terrainCell.ClearCell();
- });
- UiNode.UiPanel.TerrainGridMiddle.ForEach(cell =>
+ UiNode.UiPanel.TerrainGrid3x3.ForEach(cell =>
+ {
+ var terrainCell = (TerrainCell)cell;
+ terrainCell.ClearCell();
+ });
+ UiNode.UiPanel.TerrainGridMiddle.ForEach(cell =>
+ {
+ var terrainCell = (TerrainCell)cell;
+ terrainCell.ClearCell();
+ });
+ UiNode.UiPanel.TerrainGridFloor.ForEach(cell =>
+ {
+ var terrainCell = (TerrainCell)cell;
+ terrainCell.ClearCell();
+ });
+ }
+ else if (UiNode.L_TerrainTypeButton.Instance.Selected == 0)
{
- var terrainCell = (TerrainCell)cell;
- terrainCell.ClearTerrainBitData();
- terrainCell.ClearCell();
- });
- UiNode.UiPanel.TerrainGridFloor.ForEach(cell =>
+ UiNode.UiPanel.TerrainGrid3x3.ForEach(cell =>
+ {
+ var terrainCell = (TerrainCell)cell;
+ terrainCell.ClearCell();
+ });
+ }
+ else
{
- var terrainCell = (TerrainCell)cell;
- terrainCell.ClearTerrainBitData();
- terrainCell.ClearCell();
- });
- UiNode.UiPanel.TerrainGrid2x2.ForEach(cell =>
- {
- var terrainCell = (TerrainCell)cell;
- terrainCell.ClearTerrainBitData();
- terrainCell.ClearCell();
- });
+ UiNode.UiPanel.TerrainGrid2x2.ForEach(cell =>
+ {
+ var terrainCell = (TerrainCell)cell;
+ terrainCell.ClearCell();
+ });
+ }
+
UiNode.UiPanel.MaskGrid.ForEach(cell =>
{
((MaskCell)cell).SetConnectTerrainCell(null);
});
+
+ //清除Terrain中的数据
+ var terrainInfo = UiNode.UiPanel.EditorPanel.TileSetSourceInfo.Terrain;
+ terrainInfo.T.Clear();
}
}
\ No newline at end of file
diff --git a/DungeonShooting_Godot/src/test/TestLoadTileSetConfig.cs b/DungeonShooting_Godot/src/test/TestLoadTileSetConfig.cs
index 2f87a29..6b5ed6c 100644
--- a/DungeonShooting_Godot/src/test/TestLoadTileSetConfig.cs
+++ b/DungeonShooting_Godot/src/test/TestLoadTileSetConfig.cs
@@ -14,18 +14,26 @@
InitTileSetConfig();
_tileMap = GetNode("TileMap");
- var tileSetSplit = _tileSetConfig.First().Value;
+ var tileSetSplit = _tileSetConfig["TileSet2"];
var tileSet = tileSetSplit.GetTileSet();
+ ResourceSaver.Save(tileSet, "test_tileset.tres");
+
_tileMap.TileSet = tileSet;
- _tileMap.SetCell(0, new Vector2I(5, 5), 0, new Vector2I(0, 0));
+ _tileMap.SetCell(0, new Vector2I(5, 5), 1, new Vector2I(0, 0));
_tileMap.SetCellsTerrainConnect(0, new Array()
{
new Vector2I(10, 10),
new Vector2I(10, 11),
new Vector2I(10, 12),
+ new Vector2I(11, 10),
+ new Vector2I(11, 11),
new Vector2I(11, 12),
- }, 0, 0, false);
+ new Vector2I(12, 10),
+ new Vector2I(12, 11),
+ new Vector2I(13, 10),
+ new Vector2I(13, 11),
+ }, 1, 0, false);
}
//初始化TileSet配置