Форум: "Игры";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизПеремещение. Шаги игрока. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.046 c