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

Вниз

Перемещение. Шаги игрока.   Найти похожие ветки 

 
x22n   (2003-10-08 13:26) [0]

Хей!
Нужно чтобы игрок в игре ходил не скачками, скажем через 10 точек, а чтобы шаг был плавным. Как это реализовать???
Есть:
/          /          / -это 2 шага скачками, где /-активная позиция, т.е. игрок стоит, ждет приказов
Надо:
/........../ -1шаг, где ........ - медленное передвижение.
Вроде все просто и понятно объяснил, чтобы предвосхитить некоторые вопросы с разъяснением. Какие есть способы зделать это. Жду ответа....


 
pasha_676 ©   (2003-10-08 14:01) [1]

Ужас какой. Вы меня извините уж, но в этом форуме черезвычайно распространены темы
"Я не умеют думать, но пишу супер-пупер игру".

Ну подумай чуток... Не ужели не доходит что надо сделать не X:=X+10, а X:=X+1 десять раз в нужный момент времени...


 
x22n   (2003-10-08 14:41) [2]

Ха, что X:=X+1 десять раз надо сделать ясное дело. Но как сделать чтобы он десять раз по X:=X+1 ходил?? В этом сложность. Возможно, я очень глубоко ошибаюсь, но это не так просто сделать. Подскажите как, посмотриммм...


 
x22n   (2003-10-08 14:43) [3]

Через какие методы это сделать? а?


 
TButton ©   (2003-10-08 16:13) [4]

думаю, что через таймер или через слип.


 
x22n   (2003-10-08 16:52) [5]


>
> TButton ©   (08.10.03 16:13) [4]
> думаю, что через таймер или через слип.


Поясните, пожалуйста, как это через слип? Что это..


 
x22n   (2003-10-08 16:53) [6]


>
> TButton ©   (08.10.03 16:13) [4]
> думаю, что через таймер или через слип.


Поясните, пожалуйста, как это через слип? Что это.. Через таймер мне не очень охота, я думал над этим..


 
pasha_676 ©   (2003-10-08 17:45) [7]


> Через таймер мне не очень охота

А зря. На самом деле, имхо, самый правильный метод. К тому же можно все визуальные объекты завести на таймер и анимировать/двигать и т.д.

Через слип - все таки горбатенько по факту подвисания. Через gettickcount тогда уж.


 
Zeqfreed   (2003-10-08 21:13) [8]

через слип так:

X:=X+1;
sleep(10);
X:=X+1;
sleep(10);
X:=X+1;
sleep(10);
X:=X+1;
sleep(10);
...

или

var
CurrTicks,OldTicks : DWORD;...

procedure DrawScene;
begin
CurrTicks := gettickcount;
if CurrTicks - OldTicks > 10 then
begin
 X := X + 1;
 OldTicks := CurrTicks;
end;
end;


 
nexxiss   (2003-10-09 15:47) [9]

Попробуй так:
по таймеру - X:=X+0.5;
а затем Round(X); только не переприсваивай значение Х


 
Nuts   (2003-10-09 16:32) [10]

Nuts!
Я умею считать 2=1+1. Как мне посчитать 13+19? Меня интересуют сонкретные алгоритмы. Скинте на мыло плиз.


 
ha   (2003-10-09 17:51) [11]

мыло давай


 
Mihey ©   (2003-10-09 20:10) [12]

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

a: array [1..10] of TMovingObject;

Нужно приделать объекту (или записи) свойство IsMoving: Boolean, StepOfMoving, NumOfMoving: Integer, где NumOfMoving - число шагов, в нашем случае это 10.

Тады говоришь объекту: a[i].IsMoving := True; Далее, там где рисуется вся сцена (т.е. в приложении только один таймер!) делаешь:

If a[n].IsMoving then
begin
 a[n].StepOfMoving := a[n].StepOfMoving + 1;
 If a[n].StepOfMoving = a[n].NumOfMoving then
  a[n].IsMoving := False;
end;


 
x22n   (2003-10-09 20:22) [13]

Большое спасибо тем, кто не поленился написать ответ. Что ж будем усерднее учить delphi и пробовать писать игры...



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

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

Наверх




Память: 0.49 MB
Время: 0.029 c
14-1079187844
Alex30
2004-03-13 17:24
2004.04.11
Может кто знает как инет файлы на ящик себе отсылать?


3-1081745181
[matrix]MaroudeR
2004-04-12 08:46
2004.04.11
Где взять полный FIBPlus?


14-1082119853
syte_ser78
2004-04-16 16:50
2004.04.11
Разделение значения в ячейке


1-1079985762
MonkRo
2004-03-22 23:02
2004.04.11
Надстрочные и подстрочные знаки в RichEdit


1-1080218270
Android
2004-03-25 15:37
2004.04.11
THtmListBox