Вниз
Скачать: 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 вся ветка

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



Память: 0.48 MB
Время: 0.027 c
6-1079088625
Trogvar
2004-03-12 13:50
2004.04.11
Сканер TCP-портов (SYN-stealth)


1-1079886759
новичок_из_сыктывкара
2004-03-21 19:32
2004.04.11
Всплывающая подсказка


8-1070635022
Tracker
2003-12-05 17:37
2004.04.11
Запись музыки


6-1076148549
sash_master
2004-02-07 13:09
2004.04.11
Протоколы в Delphi


3-1081863694
__Andy__
2004-04-13 17:41
2004.04.11
Расскраска строк в DBGridEh




   Наверх