显示块时出现奇怪的错误

时间:2018-09-16 11:25:41

标签: c# xna

因此,我在技术上使用3D,但在2D顶视图体素游戏中显示。 我已经为世界及其图块做了一个有效的展示,但是后来我添加了实体。他们应该这样工作,以便将它们分配给特定的块以优化显示。它们肯定已正确分配,但问题仍然存在。算法选择的块要么随其相邻的块摆动而变化,要么被完全错误地选择。

我在嵌套循环中运行显示-这样它就可以使播放器看到所有东西。 (rangeX以像素为单位,view [3]以像素/像素为单位)

double ama = viewing.chunksize;

for (int x = (int)-ama; x <= ama + rangeX / view[3]; x += (int)ama)
{
    for (int y = (int)-ama; y <= ama + rangeY / view[3]; y += (int)ama)
    {

首先,我选择一个3D矢量(我减去Y位置,因为它是从左上角而不是左下角渲染的)

Vector where = new Vector((x + view[0]), (y - view[1]), viewing.size[2] * 0.96);  // in tiles

然后我将向量下限到最近的块

where = Vector.RoundAbout(viewing, where); // this method works flawlessly, proven by the tile display being correct
where = new Vector(Math.Floor(where[0] / ama) * ama, Math.Floor(where[1] / ama) * ama, where[2]); // round to 16's

然后它根据图块选择块-这是我遇到问题的地方。我已经用鼠标的位置以及鼠标在什么位置进行了测试,但这与选择的鼠标完全不同。 ChunkAt方法可以正常运行,但不能正常运行。 (点类与向量类相同,但只包含整数)

CelestialBody.Chunk at = viewing.ChunkAt((Point)where);

我绝对不知道是什么原因引起了摇晃,我一直试图解决这一问题,但是一天都没有成功。除去地板只会造成更多的情况。

0 个答案:

没有答案