C# 如何在基于瓷砖的游戏中处理液体流动?
正如标题所说,我需要在基于瓷砖的游戏中处理液体 信息:每个磁贴为16x像素,并且有一个水位(字节)。 因为每一块瓷砖都有一个水位,所以水应该与附近的其他瓷砖平均。但我似乎做不到 我希望这段视频是这样的: 但我就是做不到。帮忙C# 如何在基于瓷砖的游戏中处理液体流动?,c#,xna,tile,C#,Xna,Tile,正如标题所说,我需要在基于瓷砖的游戏中处理液体 信息:每个磁贴为16x像素,并且有一个水位(字节)。 因为每一块瓷砖都有一个水位,所以水应该与附近的其他瓷砖平均。但我似乎做不到 我希望这段视频是这样的: 但我就是做不到。帮忙 if (WaterLevel > 0) { //Bottom if (Program.Game.CurrentMap.Tiles[(int)TileLocation.X, (int)TileLocati
if (WaterLevel > 0)
{
//Bottom
if (Program.Game.CurrentMap.Tiles[(int)TileLocation.X, (int)TileLocation.Y + 1].Collide == false && Program.Game.CurrentMap.Tiles[(int)TileLocation.X, (int)TileLocation.Y + 1].WaterLevel != 255)
{
if ((int)Program.Game.CurrentMap.Tiles[(int)TileLocation.X, (int)TileLocation.Y + 1].WaterLevel + (int)WaterLevel > 255)
{
WaterLevel -= (byte)(255 - Program.Game.CurrentMap.Tiles[(int)TileLocation.X, (int)TileLocation.Y + 1].WaterLevel);
Program.Game.CurrentMap.Tiles[(int)TileLocation.X, (int)TileLocation.Y + 1].WaterLevel = 255;
}
else
{
Program.Game.CurrentMap.Tiles[(int)TileLocation.X, (int)TileLocation.Y + 1].WaterLevel += WaterLevel;
this.WaterLevel = 0;
}
}
//Left or Right
else
{
bool Left = Program.Game.CurrentMap.Tiles[(int)TileLocation.X - 1, (int)TileLocation.Y].Collide;
bool Right = Program.Game.CurrentMap.Tiles[(int)TileLocation.X + 1, (int)TileLocation.Y].Collide;
byte Divider = 1;
int Average = WaterLevel;
if (Left)
{
Divider += 1;
Average += Program.Game.CurrentMap.Tiles[(int)TileLocation.X - 1, (int)TileLocation.Y].WaterLevel;
}
if (Right)
{
Divider += 1;
Average += Program.Game.CurrentMap.Tiles[(int)TileLocation.X + 1, (int)TileLocation.Y].WaterLevel;
}
WaterLevel = (byte)(Average / Divider);
Average /= Divider;
Divider -= 1;
if (Left)
{
Program.Game.CurrentMap.Tiles[(int)TileLocation.X - 1, (int)TileLocation.Y].WaterLevel = (byte)(Average / Divider);
Average /= Divider;
Divider -= 1;
}
if (Right)
{
Program.Game.CurrentMap.Tiles[(int)TileLocation.X + 1, (int)TileLocation.Y].WaterLevel = (byte)(Average / Divider);
Average /= Divider;
Divider -= 1;
}
}
}
你目前遇到的问题是什么?我建议你去看看Terria是如何做到这一点的。有一些基本的算法,应该不难理解。这里没有实际的例外,只是水没有像我希望的那样流到最低点。我检查了Terraria,但来源太乱了,我不想进入那里。我想让游戏尽可能真实。我尽了最大的努力,尽了最大的努力,但这还不够好。