Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

birdfreeyahoo

Alter Hase

  • »birdfreeyahoo« ist der Autor dieses Themas

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

1

06.05.2012, 20:26

FPS-Steuerung

Weiß jemand wie ich mithilfe der TriBase-Engine eine FPS-Steuerung entwickle? Ich hab schon im Internet rumgeschaut aber nichts gefunden. Was ich ausprobiert habe, ist eine Kamera-Klasse von tbObject abzuleiten, die Position auf 0,0,0 setzen und die Kamera auf die Position des Objekts zu setzen.
Gerichtet wird sie auf die relative Z-Achse des "Objekts" und der Up-Vektor ist die relative Y-Achse. Allerdings wollte das nicht funktionieren.

Ich hoffe jmd kann mir helfen.
Danke im Voraus

FSA

Community-Fossil

  • Private Nachricht senden

2

06.05.2012, 20:31

Warum machst du das so kompliziert? Einfach Kamera erstellen und mit Tasten die Position ändern. Mit der Maus ist es etwas kniffliger, wenn du da nicht weiterkommst, kann ich dir mal Codeschnipsel geben.
MfG

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

birdfreeyahoo

Alter Hase

  • »birdfreeyahoo« ist der Autor dieses Themas

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

3

06.05.2012, 20:35

Genau das mit der Maus mein ich ja. Das mit der Tastatur ist ja kein Problem, einfach m_vCameraPos verändern.
Ich frage mich außerdem wie das mit NEG und POS ist. Ich würde wie bei Galactica, g_pfButtons[TB_MOUSE_XXX]-g_pfOldButtons[TB_MOUSE_XXX] machen und hätte dann den Verschiebungsunterschied, allerdings nur auf einer Achse. Wie ist der Unterschied auf der Gegenachse? Und wie muss ich diese kombinieren?

FSA

Community-Fossil

  • Private Nachricht senden

4

06.05.2012, 20:47

NeuX - AltX und NeuY -AltY. Dann hast du zwei Werte. Die kannst du jetzt bearbeiten und den Kamerawinkeln hinzuzählen.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »FSA« (09.08.2012, 11:58)


Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

5

06.05.2012, 20:50

Mach mal erst eine Kamera die du vorwärts, rückwärts und seitwärts bewegen kannst. Dabei auch darauf achten, dass das auch funktioniert wenn die Kamera schief im Raum steht, heisst nicht genau entlang einer Achse guckt. Danach baust du die Drehung ein. Aber auch wieder nur mit Tasten. Zuerst links und rechts und dann oben und unten dazu. Wenn dass dann läuft, ist es mit der Maus nur noch halb so schwer. Dabei hast du den Vorteil, dass die Steuerung schon mal läuft und du dich nur noch um die Probleme mit der Maus kümmern musst. Ansonsten suchst du den Fehler hinterher an falscher Stelle und handelst dir nur Stress ein.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

birdfreeyahoo

Alter Hase

  • »birdfreeyahoo« ist der Autor dieses Themas

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

6

06.05.2012, 20:58

Und wie soll ich den LookAt-Vektor ändern? Also bei nach oben und nach unten den Y-Wert bis zu 1/-1. Bei Nach links und nach rechts wirds schwieriger. Und muss ich den Vektor danach noch normalisieren?
@FSA: Kannst du mir mal den Codeschnipsel zeigen?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »birdfreeyahoo« (06.05.2012, 21:30)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

7

06.05.2012, 21:08

Stichwort: Kugelkoordinaten ;)

FSA

Community-Fossil

  • Private Nachricht senden

8

06.05.2012, 21:08

Du brauchst den LookUpVector doch nicht zu ändern. Ja also meine Codeschipsel sind etwas dürftig aber wenn es dir hilft ;)

C-/C++-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
GetCursorPos( &ptMousePosition );

    if( m_iUp == 0 )
    {
        ptMousePositionOld = ptMousePosition;
        ptMousePositionDiffrent.x = 0;
        ptMousePositionDiffrent.y = 0;
        m_iUp ++;
    }

    ptMousePositionDiffrent.x = (ptMousePosition.x - ptMousePositionOld.x);
    ptMousePositionDiffrent.y = (ptMousePosition.y - ptMousePositionOld.y);
    
    if(!bReset)
    {
        OutputX += ptMousePositionDiffrent.x * MouseSensitive * 0.1f/* fNumSecsPassed*/;
        OutputY += -(ptMousePositionDiffrent.y * MouseSensitive * 0.1f/* fNumSecsPassed*/);
    }
    else
    {
        OutputX = ptMousePositionDiffrent.x * MouseSensitive * 0.1f/* fNumSecsPassed*/;
        OutputY = -(ptMousePositionDiffrent.y * MouseSensitive * 0.1f/* fNumSecsPassed*/);
    }

    ptMousePositionOld = ptMousePosition;

OutputX und Y sind die Werte, die du dann zum Kamerawinkel hinzu addierst.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

birdfreeyahoo

Alter Hase

  • »birdfreeyahoo« ist der Autor dieses Themas

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

9

06.05.2012, 21:40

Kannst du die Variable m_iUp erklären? Und mit LookUp meinte ich LookAt. Also muss ich im LookAt-Vektor nur als x den Sinus des Winkels, als z den Kosinus und als y den x-Achsen-Rotationswinkel eintragen?`In Bogenmaß dann nehm ich an.

FSA

Community-Fossil

  • Private Nachricht senden

10

06.05.2012, 21:52

m_iUp ist nur dazu da, um beim Erstellen des Handlers alles zurückzusetzen, da es anfangs mit dem Konstruktor Probleme gab. Zum LookAt:

C-/C++-Quelltext

1
m_vCameraDir = Vector3( sinf(m_fCameraAngleX) * cosf(m_fCameraAngleY), m_fCameraAngleY, cosf(m_fCameraAngleX) * cosf(m_fCameraAngleY) );

Vector3 ist bei dir dann tbVector3 oder so ;)

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Werbeanzeige