Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Directx und die perfekte Steuerung! ;) (https://www.delphipraxis.net/42962-directx-und-die-perfekte-steuerung-%3B.html)

maximi 26. Mär 2005 16:54


Directx und die perfekte Steuerung! ;)
 
Hallo,
ich bastel gerade ein bisschen mit Directx herum und wollte mal wissen, ob es irgendwo einen guten Algorithmus für die perfekte Steuerung der "Kamera" mit der Maus gibt!?
Ich habe diesen Code:
Delphi-Quellcode:
      D3DXMatrixLookAtLH (ViewMatrix,D3DXVECTOR3(ViewDist,
                                                 ViewHeight,
                                                 ViewDist),
                                     D3DXVECTOR3(0.0,2.0,0.0),
                                     D3DXVECTOR3(0.0,1.0,0.0));
Ich möchte wenn ich die Maus nach links bewege dass sich meine Kamera nach links bewegt, wenn ich die Maus nach rechts....
Wenn ich mein Mausrad nach vorne bewege möchte ich in die Welt reinzoomen und wenn ich das Mausrad zurückdrehe, möchte ich rauszoomen!
Danke für Antworten.

Max

Oxmyx 26. Mär 2005 17:57

Re: Directx und die perfekte Steuerung! ;)
 
In der DirectX-SDK steht drin, wie man die Funktion benutzt:
Code:
D3DXMATRIX *WINAPI D3DXMatrixLookAtLH(
  D3DXMATRIX *pOut,
  CONST D3DXVECTOR3 *pEye,
  CONST D3DXVECTOR3 *pAt,
  CONST D3DXVECTOR3 *pUp
);
Um die Ausrichtung der Kamera anzugeben, brauchst du also nur einen Augenpunkt (wo sich die Kamera befindet), einen Zielpunkt (dort, wo die Kamera hinschaut) und einen Hoch-Vektor, der angibt, wo für die Kamera "oben" ist.
Jetzt liegt es an dir, wie du diese Punkte berechnest (Vektorrechnung).

Um einen Zoom-Effekt zu simulieren, musst du die Parameter der Perspektivenmatrix verändern.
Code:
D3DXMATRIX *WINAPI D3DXMatrixPerspectiveFovLH(
  D3DXMATRIX *pOut,
  FLOAT fovy,
  FLOAT Aspect,
  FLOAT zn,
  FLOAT zf
);
Wobei pOut die Ausgabematrix ist, fovy das Sichtfeld im Bogenmaß, Aspect das Seitenverhältnis (Breite/Höhe), zn die nahe Clippingebene und zf die ferne Clippingebene.

Ruppi 12. Apr 2005 20:05

Re: Directx und die perfekte Steuerung! ;)
 
Den timekey (Zeitunterschied zum letzten Frame) nicht vergessen!
sonst können sich user mit mehr FPS schneller umschauen...

Fragen bezgl. Delphi und DirectX können dir die User bei
http://www.delphidev.de/
sicher auch ganz genau beantworten.

Mauseigabe mit DirectInput abfangen.

kommt immer auch daraf an welche Header du verwendest.

mfg
Ruppi

Speedmaster 12. Apr 2005 20:16

Re: Directx und die perfekte Steuerung! ;)
 
Zitat:

Zitat von Ruppi
Den timekey (Zeitunterschied zum letzten Frame) nicht vergessen!
sonst können sich user mit mehr FPS schneller umschauen...

Fragen bezgl. Delphi und DirectX können dir die User bei
http://www.delphidev.de/
sicher auch ganz genau beantworten.

Mauseigabe mit DirectInput abfangen.

kommt immer auch daraf an welche Header du verwendest.

mfg
Ruppi

Timekey würde ich weglassen, den das sorgt für ein extrem schwammiges Spielgefühl( Siehe CS:S )!

phXql 12. Apr 2005 20:53

Re: Directx und die perfekte Steuerung! ;)
 
Zitat:

Zitat von Speedmaster
Zitat:

Zitat von Ruppi
Den timekey (Zeitunterschied zum letzten Frame) nicht vergessen!
sonst können sich user mit mehr FPS schneller umschauen...

Fragen bezgl. Delphi und DirectX können dir die User bei
http://www.delphidev.de/
sicher auch ganz genau beantworten.

Mauseigabe mit DirectInput abfangen.

kommt immer auch daraf an welche Header du verwendest.

mfg
Ruppi

Timekey würde ich weglassen, den das sorgt für ein extrem schwammiges Spielgefühl( Siehe CS:S )!

oder deus ex 2 ^^

Ruppi 12. Apr 2005 21:51

Re: Directx und die perfekte Steuerung! ;)
 
wenn man den durchschnittstimekey für 100FPS verwendet, dann läuft das
wie geschmiert ;)
jedenfalls bei mir.
Ansonsten hätten ja schnellere PCs spielvorteile...
mit durchschnitt zwar immernoch aber der fehler anteil ist nicht mehr so hoch...

mfg Ruppi

Speedmaster 13. Apr 2005 16:50

Re: Directx und die perfekte Steuerung! ;)
 
Zitat:

Zitat von Ruppi
wenn man den durchschnittstimekey für 100FPS verwendet, dann läuft das
wie geschmiert ;)
jedenfalls bei mir.
Ansonsten hätten ja schnellere PCs spielvorteile...
mit durchschnitt zwar immernoch aber der fehler anteil ist nicht mehr so hoch...

mfg Ruppi

Es kann meiner Meinung nach egal sein ob Leute mit einem besserem PC Vorteile haben, wenn dafür nicht das Gameplay flöten geht ist das ein durchaus gutes Opfer!

Khabarakh 13. Apr 2005 17:27

Re: Directx und die perfekte Steuerung! ;)
 
Einfach einstellbare Maussensitivität einbauen und die Sache ist gegessen :wink: .

Speedmaster 13. Apr 2005 18:29

Re: Directx und die perfekte Steuerung! ;)
 
Zitat:

Zitat von Khabarakh
Einfach einstellbare Maussensitivität einbauen und die Sache ist gegessen :wink: .

Maussensitivität hat nur bedingt mit dem Schwammigen Spielgefühl etwas zu tun, falls du CS:S und CS 1.6 hast kannst du gerne mal damit versuche anstellen!

Aenogym 13. Apr 2005 18:36

Re: Directx und die perfekte Steuerung! ;)
 
zum timekey:
in solospielen kann das ruhig genutzt werden. wenn man ein multiplayer-spiel programmiert, dnan sollte man es so machen, dass der server steuert, ob der timekey genutzt wird bei den spielern. wär mein vorschlag ;)

aenogym


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:07 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz