![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как в GLScene делать
Vermut © (2003-05-18 19:13:00)
как заставить свой объект двигатся от клавы например танк или машину
Хотябы как нибудь простенько?
А и еще как сделать мультиплееровскую игру
какой компонент
и как
SI-riuss (2003-05-28 02:53:00) [1]
Все примерно так, только скорость перемещения объекта будет зависеть от кадров в секунду, что нехорошо для компов разной мощности.
Необходимо учитывать deltaTime, а именно добавить:
procedure TForm1.GLCadencer1Progress(Sender: TObject; const deltaTime,newTime: Double);
var
speed : Single;
begin
if IsKeyDown(VK_UP) then
DummyCube1.Translate(Z*speed, 0, -X*speed);
end;
Между прочим это есть в демке \GLDemos\MESHES\TERRAIN
architector (2003-05-18 23:59:00) [2]
Сначала кинь на форму компоненты GLCadencer, GLNavigator и GLUserInterface. В инспекторе обьектов GLUserInterface поставь MouseSpeed 20, GLNavigator выбери тот, который создал. Теперь у GLNavigator"а поменяй UseVirtualUp на false и MovingObject на нужную камеру (или обьект).
uses Keyboard;
...
begin
//Лучше всего писать на событие Progress у Cadencer"а
procedure TForm1.CadencerProgress(Sender: TObject; const deltaTime, newTime: Double);
begin
GLViewer.Invalidate;
GLUserInterface1.MouseLook;
GLUserInterface1.MouseUpdate;
GLUserInterface1.MouseLookActive := true;
if IsKeyDown("w") or IsKeyDown("ц") then GLNavigator1.MoveForward(0.5);
if IsKeyDown("s") or IsKeyDown("ы") then GLNavigator1.MoveForward(-0.5);
if IsKeyDown("a") or IsKeyDown("ф") then GLNavigator1.StrafeHorizontal(-0.5);
if IsKeyDown("d") or IsKeyDown("в") then GLNavigator1.StrafeHorizontal(0.5);
end;
...
end.
А вот мультиплеер можно сделать с помощью DirectPlay (есть в комплекте с DelphiX).