Вот моя проблема. Я рендеринг оси выравнивания кубов, которые все одинакового размера. Я создал алгоритм, который рендерится вокруг игрока так:
******
******
***p**
******
******
Пока это работает, игрок не видит весь этот радиус.
Я знаю угол поворота игрока по оси Y, поэтому я надеялся изменить свой алгоритм на основе этого, чтобы он только отображал то, что игрок может видеть более или менее.
SetPlayerPosition();
float yrotrad;
yrotrad = (Camera.roty / 180 * 3.141592654f);
PlayerPosition.x += 70 * float(sin(yrotrad));
PlayerPosition.y -= 20;
PlayerPosition.z += 70 * -(float(cos(yrotrad)));
collids.clear();
for(int i = 0; i < 135; ++i)
{
for(int j = 0; j < 50; ++j)
{
for(int k = 0; k < 135; ++k)
{
if(!CubeIsEmpty(PlayerPosition.x + i, PlayerPosition.y + j, PlayerPosition.z + k))
{
collids.push_back(GetCube(PlayerPosition.x + i, PlayerPosition.y + j, PlayerPosition.z + k));
}
}
}
}
По сути, мой первоначальный алгоритм просто вычел бы 70 из местоположения игроков и отобразил бы квадрат размером 70. Поэтому я попытался умножить их на грех и потому что вращение Y, но это не сработало. Я уверен, что это возможно, я просто думаю, что что-то упустил. Как я могу достичь своей цели, только отображая то, что видит игрок.
Спасибо
Так же, как примечание, я попробовал отбраковку из фруструма, и это стало слишком медленным, я бы предпочел, чтобы это работало независимо от того, сколько у меня кубов
вместо рендеринга вышеуказанного идентификатора, как если бы он был, например, если игрок смотрит ->
...... ****
...... ****
......P****
...... ****