![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
алгоритм для 2д-аркады
Green_Templar © (2005-03-27 23:29:00)Есть чувак ("прямоугольник", вечно перпендикулярный сторонам монитора), и есть поверхность, по которой он бегает. Какой самый оптимальный алгоритм для проверки стоит прямоугольник на поверхности или нет? Как лучше всего задавать поверхность? Естественно, что поверхность не обязательно паралельна Ох.
Я делаю так:
x:array of array of integer. Например x[a,b] - а-это координата персонажа по х; если b=0, то x[a,b]=количеству точек на прямой x=a. соответственно, for c:=1 to x[a,0] даёт нам множество точек этой самой прямой. x[a,b], b<>0 - координата у точки.
Потом всё время проверяю наличие точек в прямоугольнике , где Left и Right - правая и левая точка чувака, Top=Bottom чувака, Bottom=Bottom+ускорение силы тяжести(5 пикселей, например), с которым чувак падает вниз. Если чувак прыгает, естессно, алгоритм на проверку крыши другой (не трудно догадаться, какой).
И всё бы хорошо, если бы такой алгоритм давал больше 20 фпс (на хороших машинах показывает фпс минимум 30), и это при том, что у меня пока что только 1 перс бегает, а если врагов добавить...
Просьба выразить своё "фе" по поводу сего творения мысли, чем больше, тем лучше :)
Ещё вопрос: а как сделать так, что если персонаж запрыгнул на плывучую колоду, то он перемещается вместе с ней по х и по у, а не вываливается при движении?
Green_Templar (2005-03-28 01:01:00) [1]Пишу на Дэлфи7 + ДэлфиХ, потом перейду с ДэлфиХ на дайректДроу-похожие. Отрисовка у меня совсем ничего не жрёт - разрешение экрана никакого значения как ни странно не играет, тем более что там пока кроме персонажа и точек карты ничего не рисуется. А как насчёт колоды?
@!!ex (2005-03-28 00:01:00) [2]Я так думаю, что основную часть ресурсов у тебя жрет не расчет, а отрисовка.....
П7 (2005-03-27 23:44:00) [3]На чём пишешь? Обычно примерно так и делают... Если я правильно тебя понял.