Seite 1 von 1

Kamera mit Kollision

Verfasst: 05.04.2012 15:03
von Abraham0607
Ich programmiere gerade einen FPS und bin auf ein Problem gestoßen.

Mit MoveCamera(...) lässt sich die Camera bewegen, wenn man jetzt die
Kamera dreht, dreht sich das "Bewegungsfeld" mit, so dass die Kamera
mit einer Bewegung auf der Z-Achse immer nach vorne bewegt wird.

Bei einem Entity/Node/... ist das aber nicht so. Das "Bewegungsfeld"
bleibt immer gleich.

Um Kollisionen für die Kamera zu bekommen binde ich sie an ein Entity
und bewege das ganze dann so:

Code: Alles auswählen

MoveEntity(...)
LocateCamera(x,EntityX(...),EntityY(...),EntityZ(...))
Mit dieser Methode kann man dann das ganze aber nur global, also
nach dem festen "Bewegungsfeld" bewegen.

Jetzt die Frage:

Kann ich es irgendwie machen, dass ich Entity und Kamera nach dem
"Kamera-Schema" bewege und trotzdem die Kollisionen habe?


Danke im Vorraus

Re: Kamera mit Kollision

Verfasst: 11.04.2012 10:12
von Abraham0607
Da kann mir echt keiner helfen?

Re: Kamera mit Kollision

Verfasst: 11.04.2012 19:59
von FosJonas
Soweit ich weis müsstest du dafür die koordinaten für die Bewegung selber Berechnen.

Also z.b. so:

Code: Alles auswählen

X = Cos(Winkel) * Distanz
Z = Sin(Winkel) * Distanz
MoveEntity(Entity,X,0,Z)
Dies wäre eine Lösung für die Bewegung im 2 Dimensionalen Bereich, für die Höhe gibts dann auch noch eine Formel,
die allerdings mein Wissen übersteigt.

Anders könntest du machen indem zu zuerst die Kamera bewegst und dann einfach den Unterschied zur alten Kamera position berechnest um das Entity um diesen Wert zu bewegen:

Code: Alles auswählen

OldX = CameraX(Camera)
OldY = CameraY(Camera)
OldZ = CameraZ(Camera)
MoveCamera(Camera,MoveX,MoveY,MoveZ)
NewX = CameraX(Camera)
NewY = CameraY(Camera)
NewZ = CameraZ(Camera)
DifX = NewX - OldX
DifY = NewY - OldY
DifZ = NewZ - OldZ
MoveEntity(Entity,DifX,DifY,DifZ)
Ich hoffe natürlich das, dass ganze jetzt auch funktioniert, da ich nicht viel mit der Physic Engine von PB zu tun habe.

Re: Kamera mit Kollision

Verfasst: 12.04.2012 12:45
von Abraham0607
DANKE!!!!

Jetzt läufts!