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

Вниз

Движение в DirectX.   Найти похожие ветки 

 
RavenD ©   (2002-10-04 21:12) [0]

Пожалуйста помогите.
В DirectX пытаюсь сделать движущийся шарик.Пересчёт коордигат производится с задержкой:
Time:=GetTickCount;

SetRect(rect, Pos0.X, Pos0.Y, Pos0.X+12, Pos0.Y+11);
hRet:=FDDSBack.BltFast(Pos0.X,Pos0.Y,FDDSPole,@rect,DDBLTFAST_WAIT);
if hRet=DDERR_SURFACELOST then begin
hRet:=RestoreALL;
if Failed(hRet) then Result:=hRet;
Exit
end;

if Time-TimeLast> задержка then begin
Проверка на ударение
Пересчёт координат
end;

TimeLast:=GetTickCount end;

hRet:=FDDSBack.BltFast(Pos.X,Pos.Y,FDDSTemp,@temp,DDBLTFAST_WAIT
or DDBLTFAST_SRCCOLORKEY);
if hRet=DDERR_SURFACELOST then begin
hRet:=RestoreALL;
if Failed(hRet) then Result:=hRet;
Exit
end;
Pos0:=Pos;
При воспроизведении мячик двигается как бы дёргаясь хаотично.При установлении нулевой задержки всё проходит плавно.Как это исправить?
Заранее спосибо.


 
Sapersky_   (2002-10-05 17:52) [1]

Возможно, так:
k:=(Time-TimeLast)/задержка; // задержка<>0 :)
Затем при пересчёте координат:
x:=x+dx*k;
То есть координаты желательно вычислять и хранить в Single и округлять только при выводе на экран (когда-то это было медленно, сейчас - без разницы).
Можно и
x:=x+Round(dx*k);
но тогда влияние k будет довольно "грубым".
Пересчитывать в данном случае можно через интервал "задержка"
(If k>=1 then begin...) или на каждом такте. В случае, если объект управляется пользователем, желателен 2-й вариант (управление получается "мягче").
Да, ещё вариант: можно попробовать в качестве функции для измерения времени QueryPerformanceCounter - она (вроде бы) точнее.



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

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

Наверх




Память: 0.47 MB
Время: 0.028 c
1-17012
maxfiles
2003-02-25 03:29
2003.03.06
Можно ли в Delphi 7 задать цвет в Listbox конкретной чтрочке?


1-17194
denis24
2003-02-24 12:36
2003.03.06
quickreport


14-17332
PDF
2003-02-17 22:30
2003.03.06
Работа с PDF в Delphi


14-17378
ProtoSoft
2003-02-18 00:31
2003.03.06
Привет! Ребята, подскажите пожалуйста алгоритм поиска наиме..


3-16968
AlexAlex2
2003-02-14 16:59
2003.03.06
Как бороться с Directory is bizy на присв. Session.PrivateDir ?