Kamera mit Kollision

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Abraham0607
Beiträge: 32
Registriert: 16.01.2012 16:38
Kontaktdaten:

Kamera mit Kollision

Beitrag 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
MfG Abraham

====================
Virtual Cookbook
Benutzeravatar
Abraham0607
Beiträge: 32
Registriert: 16.01.2012 16:38
Kontaktdaten:

Re: Kamera mit Kollision

Beitrag von Abraham0607 »

Da kann mir echt keiner helfen?
MfG Abraham

====================
Virtual Cookbook
Benutzeravatar
FosJonas
Beiträge: 121
Registriert: 12.11.2008 19:31

Re: Kamera mit Kollision

Beitrag 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.
Purebasic 5.10 | Kubuntu 12.04 (64 bit) | Opera 12.01 | Nvidia GT 9800
Xubuntu 12.04 (64 bit) | Intel HD Graphis (Onboard)
Benutzeravatar
Abraham0607
Beiträge: 32
Registriert: 16.01.2012 16:38
Kontaktdaten:

Re: Kamera mit Kollision

Beitrag von Abraham0607 »

DANKE!!!!

Jetzt läufts!
MfG Abraham

====================
Virtual Cookbook
Antworten