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

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

11

27.12.2007, 13:27

Zitat von »"Spy"«


P.S.: In meiner Engine soll sich die Spielfigur nach der Kamera richten:
Die Spielfigur wird herunterfallen wenn die Kamera heruntergeht. Dieses System stellt ein verbessertes Ausweichen von Kugeln,Geschossen dar.


Mag ja sein und ich will dir nichts unterstellen, wie David. Trotzdem ändert das relativ wenig. Du brauchst bei deiner Kamera einen Positionsvektor, der den Ort der Kamera beschreibt und einen LookAtVektor, der beschreibt, wo die Kamera hinschaut. Bei einem Sprung nimmst du nur die entsprechenden Änderungen am Positionsvektor vor. Wo der Spieler hinschaut ist ja relativ egal.

Zitat


Ich weis allerdings nicht wie man "BodenNichtMitSpielfigurVerbunden" berechnet.

Öhm ja...
Also du könntest eine Physik-Engine verwenden. Oder du schreibst dir schnell eine ;)
Oder du machst es etwas unsauberer ohne alles^^

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
bool CheckCollision(Object1, Object2)
{
    if(Object1->getPosition().x - Object1->getRadius() >= 
    Object2.GetPosition().x - Object2->getRadius() && 
    Object1->getPosition().x + Object1->getRadius() <=     
    Object2->getPosition().x + Object2->getRadius() && /*Und so weiter für y und z */)
    {
        return true;
     }
}

Und dann fragst du in der Move Funktion eben die Kollision der Objekte ab und tust dann was dir beliebt.
Radius ist in dem Fall ne Float Variable. Das geht natürlich nur, wenn das Objekt ne Kugel ist, wenn es ein Würfel ist, dann musst du halt dementsprechend einen Vector3 Size erstellen und dann mit getSize().x/y/z arbeiten.

Man sieht schon den Nachteil, wenn du Objekte verschidener Formen hast, wird das ganze recht kompliziert. Geschweige denn, wenn du Objekte hast, die über die Grundobjekte hinaus gehen.
Außerdem wird die Mthode sehr schnell unübersichtlich.

Spy

Frischling

  • »Spy« ist der Autor dieses Themas
  • Private Nachricht senden

12

29.12.2007, 12:29

Ja danke ich weis wie man die Kolission zwischen zwei Objekten ausrechnet(steht im Buch). Aber woher weis ich WAS Object2 ist? Ich kann doch keine Kollisionskontrolle mit allen Bodenumgebungsquadern machen das wäre doch Hardware-Overkill oder täusche ich mich da. Hat vielleicht jemand ne Idee wie ich herausfinde welches Objekt,Polygon bzw. Umgebungsquader sich gerade eben unter mit befindet.

Zu "Der Spieler soll sich nach der Kamera richten": Da habe ich jetzt eine bessere Lösung gefunden:

C-/C++-Quelltext

1
2
3
4
if(SpielerNichtBodenBerührt(PLAYER))
{
 SetPlayerPos(PLAYER,tbVector(0.0f,-1.0f,0.0f)
}


Dier Kamera soll sich dann nach der Spielerpositon richten. der LookAt Vector spielt dabei dann keine Rolle.
Heist soviel wie:
1. Die Eingaben und die physikalischen Gegebenheiten auswerten und daraus
2. Neue Spielerposition berechnen
3. Daraus neue Kamerapositon berechnen
4. Dann erst zeichnen

Sprich: Spielerpositon = Kamerapositon

Ich denke so ist das die beste Lösung.
Ausserdem soll in "SetPlayerPos" auch gleich die zu machende Animation definiert sein.

Danke für eure kompetenten Antworten.

[list]Passt zwar hier nicht ganz rein: Aber weis schnell jemand wie ich die Dateien die ich in Maya(.mb) editiere in DirectX-Files(.x) konvertie?[/list]
MfG Spy
Mein GE-Projekt

13

29.12.2007, 13:41

Zitat

Ja danke ich weis wie man die Kolission zwischen zwei Objekten ausrechnet(steht im Buch). Aber woher weis ich WAS Object2 ist? Ich kann doch keine Kollisionskontrolle mit allen Bodenumgebungsquadern machen das wäre doch Hardware-Overkill oder täusche ich mich da. Hat vielleicht jemand ne Idee wie ich herausfinde welches Objekt,Polygon bzw. Umgebungsquader sich gerade eben unter mit befindet.


Ich bin ja jetzt kein SPieleprogrammierer und bin mir auch nicht sicher, ob ich dein Problem richtig verstanden habe, aber in der Regel hat man doch eine Liste oder einen Vector mit allen Objekten mit denen der Spieler kollidieren könnte und die wird in jeder Hauptschleife einmal durchlaufen und jedes Objekt wird auf Kollision geprüft.
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

Spy

Frischling

  • »Spy« ist der Autor dieses Themas
  • Private Nachricht senden

14

29.12.2007, 18:34

Ich bin ebenfalls (noch) kein Spieleprogrammier. Mit Kollision kenne ich mich noch nicht so aus ist ja auch ein fortschrittliches Thema deswegen frage ich ja. Aber danke für deine Antwort. Ich werde mir das Thema anhand von "Galactica" einmal anschauen.
MfG Spy
Mein GE-Projekt

Werbeanzeige