Вниз
Скачать: CL | DM;

алгоритм для 2д-аркады   Найти похожие ветки 

← →
Green_Templar ©   (2005-03-27 23:29) [0]

Есть чувак ("прямоугольник", вечно перпендикулярный сторонам монитора), и есть поверхность, по которой он бегает. Какой самый оптимальный алгоритм для проверки стоит прямоугольник на поверхности или нет? Как лучше всего задавать поверхность? Естественно, что поверхность не обязательно паралельна Ох.
Я делаю так:
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 перс бегает, а если врагов добавить...
Просьба выразить своё "фе" по поводу сего творения мысли, чем больше, тем лучше :)
Ещё вопрос: а как сделать так, что если персонаж запрыгнул на плывучую колоду, то он перемещается вместе с ней по х и по у, а не вываливается при движении?


← →
П7   (2005-03-27 23:44) [1]

На чём пишешь? Обычно примерно так и делают... Если я правильно тебя понял.


← →
@!!ex   (2005-03-28 00:01) [2]

Я так думаю, что основную часть ресурсов у тебя жрет не расчет, а отрисовка.....


← →
Green_Templar ©   (2005-03-28 01:01) [3]

Пишу на Дэлфи7 + ДэлфиХ, потом перейду с ДэлфиХ на дайректДроу-похожие. Отрисовка у меня совсем ничего не жрёт - разрешение экрана никакого значения как ни странно не играет, тем более что там пока кроме персонажа и точек карты ничего не рисуется. А как насчёт колоды?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.024 c
1-1118775803
Mishel01
2005-06-14 23:03
2005.07.11
Как сравнить две дирректории ?


3-1116509534
Alexander Panov
2005-05-19 17:32
2005.07.11
Структура хранения данных для клинета форумов.


1-1118440727
KOLIG
2005-06-11 01:58
2005.07.11
Открытие каталогов


14-1118046634
syte_ser78
2005-06-06 12:30
2005.07.11
дырка в плите


3-1117625167
Aljona
2005-06-01 15:26
2005.07.11
TTable




   Наверх