[OpenGL] Poruszanie sie po mapie

0

Witam
Problem jest następujący: Otóz mam pewna procedure która porusza widza względem osi x,y,z, obrót oka następuje względem k (kąt poziomy oka) do rzeczy:

poruszanie jest za pomocą klawiszy W,S,A,D

var
  K : Real = 0; // kąt poziomy obr. oka 
  PosX: Real = 0;
  PosZ: Real = 0;
// k = od 0 do 360

procedure TOpenGLform.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if key = #97 then posX := posX + 0.1;
  if key = #100 then posX := posX - 0.1;
  if key = #119 then posZ := posZ + 0.1;
  if key = #115 then posZ := posZ - 0.1;  
end;

w jaki sposób przerobic kod by poruszanie klawiszami W,S,A,D bylo zintegrowane ze skierowaniem oka (K) w dana strone? Ew. moze byc poruszanie tylko klawiszem [W]

z gory dziekuje :)

0
	                             int p = GetTickCount();
glop = kąt
							   direction.x = cos(glop*(pi/180.0));
							   direction.y = 0.0f;
							   direction.z = sin(glop*(pi/180.0));

//							   direction = Normalize(direction);
pos - pozycja = aktualnej pozycji przemnozonej przez predkosc * czas pomiedzy klatkami

		pos = vectors_add(pos,vector_multiple(direction,V	* x ) );

}
0

poradziłem sobie :) zastosowałem procedura glLookAt() dla ustawienia kamery. Następnie zmienne posx, posy, posz - to polozenie oka na osiach x,y,z a K - kąt nachylenia w poziomie

dla zainteresowanych zamieszczam kod poruszania względem nachylenia kąta 'k' kamery (w rezultacie poruszamy sie pa mapie jak w grach fpp):

    Ord('W'):
    begin
      PosX:=PosX+Cos(DegToRad(K+180))*0.01;
      PosZ:=PosZ+Sin(DegToRad(K+180))*0.01;
    end;
    Ord('S'):
    begin
      PosX:=PosX+Cos(DegToRad(K))*0.01;
      PosZ:=PosZ+Sin(DegToRad(K))*0.01;
    end;
    Ord('A'):
    begin
      PosX:=PosX+Cos(DegToRad(K+90))*0.01;
      PosZ:=PosZ+Sin(DegToRad(K+90))*0.01;
    end;
    Ord('D'):
    begin
      PosX:=PosX+Cos(DegToRad(K-90))*0.01;
      PosZ:=PosZ+Sin(DegToRad(K-90))*0.01;
    end;

gdzie :

var
  K : Real = 321;
  PosX: Real = 0;
  PosZ: Real = 0;
</b>
0

moze inaczej http://cezet.host.sk/ se ta, wejdz i sciagnij silnik w opengl

1 użytkowników online, w tym zalogowanych: 0, gości: 1