0
我正在製作完全由立方體制成的遊戲。我注意到,當我向前走時,它快速閃爍,但如果我沿相反的方向旋轉播放器,它的速度會變慢。所以我所做的是根據角度排序的,但我仍然會得到一些有點慢的角度。這是我是如何做到的:Z排列幾何
我基本上是在某些角度反向迭代,但我怎麼能使它一致,以便每個角度都快速減輕,一些像88-92或178-182這樣的直角是真的很慢(透支)。
感謝
SetPlayerPosition();
PlayerPosition.x -= 70;
PlayerPosition.y -= 20;
PlayerPosition.z -= 70;
collids.clear();
CBox* tmp;
float offset = -10;
if(Wrap(Camera.roty + offset) > 180 && Wrap(Camera.roty + offset) < 270)
{
for(int i = 140; i > 0; --i)
{
for(int j = 0; j < 40; ++j)
{
for(int k = 0; k < 140; ++k)
{
tmp = GetCube(PlayerPosition.x + i, PlayerPosition.y + j, PlayerPosition.z + k);
if(tmp != 0)
{
if(frustum.sphereInFrustum(tmp->center,25) != NULL)
{
collids.push_back(tmp);
}
}
}
}
}
}
else if(Wrap(Camera.roty + offset) > 0 && Wrap(Camera.roty + offset) < 90)
{
for(int i = 0; i < 140; ++i)
{
for(int j = 0; j < 40; ++j)
{
for(int k = 140; k > 0; --k)
{
tmp = GetCube(PlayerPosition.x + i, PlayerPosition.y + j, PlayerPosition.z + k);
if(tmp != 0)
{
if(frustum.sphereInFrustum(tmp->center,25) != NULL)
{
collids.push_back(tmp);
}
}
}
}
}
}
else if(Wrap(Camera.roty + offset) > 90 && Wrap(Camera.roty + offset) < 180)
{
for(int i = 0; i < 140; ++i)
{
for(int j = 0; j < 40; ++j)
{
for(int k = 0; k < 140; ++k)
{
tmp = GetCube(PlayerPosition.x + i, PlayerPosition.y + j, PlayerPosition.z + k);
if(tmp != 0)
{
if(frustum.sphereInFrustum(tmp->center,25) != NULL)
{
collids.push_back(tmp);
}
}
}
}
}
}
else if (Wrap(Camera.roty + offset) > 270 && Wrap(Camera.roty + offset) < 360)
{
for(int i = 140; i > 0; --i)
{
for(int j = 0; j < 40; ++j)
{
for(int k = 140; k > 0; --k)
{
tmp = GetCube(PlayerPosition.x + i, PlayerPosition.y + j, PlayerPosition.z + k);
if(tmp != 0)
{
if(frustum.sphereInFrustum(tmp->center,25) != NULL)
{
collids.push_back(tmp);
}
}
}
}
}
}
}