Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.24;
Скачать: CL | DM;

Вниз

Worms   Найти похожие ветки 

 
Axis_of_Evil ©   (2002-10-25 11:39) [0]

Если кто помнит в Worms (Чирьвячках):
Черви ползали по кривой карте, т.е. земля у них под ногами была извилистой.
Как это реализовать?


 
Mirovodin ©   (2002-10-25 11:42) [1]

Контроль столкновений произодился не на уровне прямоугольников, а на уровне анализа прозрачного цвета. Т.е. обычная попиксельная проверка.


 
CHiF ©   (2002-10-25 11:51) [2]

а это не медленно получается?
еще там было оружие которое моментально долетает(e.g. шотган(вроде бы)), и это что получается все пиксели в данном направлении он проверяет??


 
Mirovodin ©   (2002-10-25 12:55) [3]

2 CHiF ©

А как ты иначе проверишь? Больше ни как. Если не далать пиксельный контроль, то получится что пуля (ракета) взрывается РАНЬШЕ т.е. если проверять только прямоугольный контур. Второй не приятный эффект - червяк будет ползать не по поверхности, а по кубикам, т.е. висеть в воздухе.


 
Axis_of_Evil ©   (2002-10-25 19:28) [4]

А пройдет вариант:
в DelphiX:
Нарисовать карту (bmp) с дыркой, цвет которой (дырки) есть транспарент для Image и в эту дырку поместить червя (кубик) ?
Он пересечения найдет ?

З.Ы. Вопрос конечно на прктике выяснять надо, но пень будет нескоро, а знать хочется.

>а на уровне анализа прозрачного цвета.
>Т.е. обычная попиксельная проверка.

то есть ? ...


 
greenrul ©   (2002-10-26 10:54) [5]

Я делаю похожую игру, но сразу ограничил себя - никаких дырок - по одному Y есть только один X земли.

Вот как я эту проблему решил:

MapCoord:array[1..768] of integer;

procedure generate_map(pic:TBitmap); {создаем массив высот}
var i,i2:integer;col:tColor;
begin
for i:=0 to pic.Width do
begin
i2:=1;
repeat
col:=pic.Canvas.Pixels[i,i2];
Inc(i2);
until (col<>clRed) or (i2=pic.Height-1);
MapCoord[i]:=i2+Round(BgSprite.y);
end;
end;


Procedure TUnit.DoMove(MoveCount: Integer);
begin
inherited DoMove(MoveCount);
y:=MapCoord[Round(x)]-Image.Height; {ставим на землю}
end;



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

Текущий архив: 2003.03.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
6-76543
kofman
2003-01-30 22:54
2003.03.24
Как определить есть ли доступ из локалки в инет?


14-76578
Iroma
2003-03-06 20:05
2003.03.24
Как востановить раздел сервера Novell


1-76427
neodiX
2003-03-11 12:17
2003.03.24
Как скопировать битмап в массив байтов?


1-76495
avet
2003-03-12 15:13
2003.03.24
в переменной записано название процедуры


14-76626
marsello
2003-03-07 09:42
2003.03.24
Странное поведение Delphi