Autor Beitrag
Alexander88
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Do 10.04.03 14:33 
Hallo Delphi Freunde, ich habe Probleme mit der Maus in meinem "Spiel". Die Maus bewegt sich nur sehr ruckartig. Hier ist der Code:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
 procedure TPlay.GetMousePos;
const xDiff=0.06; yDiff=0.05;
var xMouse, yMouse: Integer; MousePos: TPoint;
begin
  GetCursorPos (MousePos);
  xMouse := (MousePos.x - Screen.Width  div 2);
  yMouse := (MousePos.y - Screen.Height div 2);
  // Drehen nach links/rechts
  if xMouse < 0 then TurnVector.y := TurnVector.y + xDiff;
  if xMouse > 0 then TurnVector.y := TurnVector.y - xDiff;
  // Schauen rauf/runter
  if yMouse < 0 then
  if TurnVector.x <  1 then TurnVector.x := TurnVector.x + yDiff;
  if yMouse > 0 then
  if TurnVector.x > -1 then TurnVector.x := TurnVector.x - yDiff;
  SetCursorpos (Screen.Width div 2, Screen.Height div 2);
end;
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Do 10.04.03 17:10 
wann wird die Funktion denn aufgerufen??
Alexander88 Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Fr 11.04.03 08:00 
Hier wird GetMousePos eingebunden.

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
 procedure TPlay.RunGame;
begin
  // Spielmodus auf "Laufen" einstellen
  isRunning := true;
  // Solange Spiel "läuft"
  while isRunning do
  begin
    // ggf. auf Ereignisse reagieren (z.B. Tastatur/Maus)
    Application.ProcessMessages;
    // Tastatur/Maus abfrage
    GetInput;
    GetMousePos;
    // Koordinaten und Winkel ausrichten
    geXForm3D_SetIdentity (@XForm);
    geXForm3D_RotateX (@XForm, TurnVector.x);
    geXForm3D_RotateY (@XForm, TurnVector.y);
    geXForm3D_RotateZ (@XForm, TurnVector.z);
    geXForm3D_Translate (@XForm, ViewVector.x, ViewVector.y, ViewVector.z);
    geCamera_SetWorldSpaceXForm (Camera, @XForm);
    // Rendering starten
    if geEngine_BeginFrame
    (Engine, Camera, GE_TRUE) <> OK then
    ExitError ('BeginFrame ist gescheitert!');
    // Welt/Level rendern und darstellen
    if geEngine_RenderWorld
    (Engine, World, Camera, 0.0) <> OK then
    ExitError ('Rendering gescheitert!');
    // Rendering beenden
    if geEngine_EndFrame(Engine) <> OK then
    ExitError ('EndFrame ist gescheitert!');
    // Anzeige-Dummy (für WindowMode)
    geEngine_Printf(Engine, 0,0,'Die Hoelle auf Erden 2');
  end;
end;