nenicolay

Зарегистрирован с 07.05.2020
Комментарии
07 мая 2020

Хорошая статья. Помогла Мне кажется "сердце" кода можно ускорить так:

float c = 0;

for (; c<20; c+=1) { float x = player_x + ccos(player_a); float y = player_y + csin(player_a); if (map[int(x)+int(y)*map_w]!=' ') { c -= 1 break; } }

for (; c<20; c+=.05) { float x = player_x + ccos(player_a); float y = player_y + csin(player_a); if (map[int(x)+int(y)*map_w]!=' ') break; }

Таким образом луч идёт большими шагами (длинной в единицу), пока не врежется в стену, затем возвращается назад на один шаг, и продолжает идти маленькими шагами (0.05) до стены (вместо прохождения всего пути шагом 0.05).

Ответить