Kameraführung[3D]
Übersicht

![]() |
DottakopfBetreff: Kameraführung[3D] |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Blitzer !
Hmm Kameraführung... Ihr denk bestimmt, dass ich nicht die suche benutz habe ![]() ![]() Ich hab vor kurzen mal wieder ne runde mit meinem Game Cube gedreht und da ist mir ne gut geeignete Kameraführung für mein "Ameisen game" aufgefallen. In dieser ist die Kamera immer auf den Spieler ausgerichtet wobei drehungen des Spielers in erster Linie nicht beachtet werden. Also das heißt wenn der Spieler z.B. nach links läuft, bleibt die cam drauf und "schaut ihm von der Seite beim laufen an". Wobei die distance gleichbleibt. Sobalt ich die R-Taste drücke springt die cam wieder hinter den Player. Und genau sowas wollte ich auch, da sie zum einen übersichtlich ist und zum andern einfach schick ausschaut. Hab mich dan auch gleich an mein Projekt geschmissen und and der cam einstellung rungetüftelt: ich dachte mir ich erstelle 2 pivots, einen für den Player, einen für die cam. Dann Parents verteilen auf Player und Cam legen, damit diese bei Bewegung drauf bleiben. Abschliesend noch zwischen dem camPivot und playerPivot ein Parent legen damit diese gleichweit entfernt bleiben / sich verfolgen. (ja geil erklärt ich weis...). Hmm das mein Gedankengang. Passiert ist dann aber nicht viel... ![]() Warum Passiert das? mit entityparent bleiben doch zwei objekte immer auf gleicher distance. Warum klappt das zwischen zwei Parents nicht.(P1,P2)? Ist der Gedankengang überhaupt richtig ? bzw. Sinnvoll. Bestimmt mal wieder n dödel fehler ^^ Damit Ihr euch des aber besser vorstellen könnt, was ich da zam gecoded hab sende ich meinen lösungsversuch/code mit. Code: [AUSKLAPPEN] Global P1 = CreatePivot(player) Global P2 = CreatePivot(camera) ;schleife ;function ;--- Function update_camera() EntityParent(P1),player EntityParent(P2),camera EntityParent(P1),P2 End Function Wäre auch nett wenn Ihr mir noch erklären könntet wie des mit dem "hinter den Spieler springen" funktioniert. Also ich dank euch schoneinmal für eure Hilfe !! mfg Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
- Zuletzt bearbeitet von Dottakopf am Sa, Feb 03, 2007 22:34, insgesamt 2-mal bearbeitet
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das mit dem "hinter den Spieler springen" sollte so funktionieren:
KameraHöhe = SpielerHöhe + IrgendeinWert KameraXPosition = - Cos(SpielerRotation) * Entfernung KameraYPosition = - Sin(SpielerRotation) * Entfernung Kamera auf Spieler zeigen lassen |
||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ahh ok danke !
Aber (SpielerRotation) ? Wie frage ich das ab, oder was ist das genau ? ![]() mfg dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
SpielerRotation ist ein Winkel (0°-355°). Irgendwohin muss dein Spiele auch zeigen (gehen, usw.) und dafür nimmt man normalerweise einen Winkel.
Wie du einen Winkel eines Objektes abfragst, musst du mich nicht fragen, habe selber nie 3D programmiert. |
||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke für deine Hilfe !
Jedoch ist mein Hauptproblem noch nicht gelöst worden ![]() Kurz nochmal was ich wollte : Es geht um eine Spezielle Kamaführung in der die Kamera immer auf den Spieler ausgerichtet sein soll und drehungen des Spielers in erster Linie nicht beachtet werden sollen. Also, sodass die Kamera nicht immer hinter dem Spieler ist, sondern diesen nur "betrachtet" wird. Dieser Effekt, mit dem "Dreh-ignorier-dingens", kommt mit Pointentity a,v,0 ganz gut raus. Doch die Entfernung soll gleichbleiben. Das hab ich mit Entityparent versucht zu lösen doch klappen tuts nicht. ![]() Ich hab kurz mal n klönes Progi gecoded wo man das gut sehen kann. (wasd Steuerung) Code: [AUSKLAPPEN] Graphics3D 800,600 SetBuffer BackBuffer() ;licht Global light = CreateLight() RotateEntity light,0,0,90 ;spieler Global player = CreateCube() PositionEntity player,0,1,0 EntityColor player,255,0,0 ;cam Global camera = CreateCamera() PositionEntity camera,0,3,-5 ;terrain Global terr = CreateTerrain(256) EntityColor terr,0,80,0 PositionEntity terr,-30,0,-20 ;hauptschleife----------------------- While Not KeyDown(1) movehero() update_camera() UpdateWorld RenderWorld Flip Wend End ;----------------------------------- Function movehero() If KeyDown(17) Then MoveEntity player,0,0, 1 If KeyDown(31) Then MoveEntity player,0,0,-1 If KeyDown(30) Then TurnEntity player,0, 2.5,0 If KeyDown(32) Then TurnEntity player,0,-2.5,0 End Function ;------------------------------------ Function update_camera() PointEntity camera,player,0 MoveEntity camera,0,0,EntityDistance(camera,player)-10 End Function ;------------------------------------ mfg Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
- Zuletzt bearbeitet von Dottakopf am Do, Feb 08, 2007 22:20, insgesamt 2-mal bearbeitet
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
MoveEntity camera,0,0,EntityDistance(camera,player)-10 | ||
![]() |
DottakopfBetreff: Hmm fast ^^ |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke !
Leider ist das nicht ganz das was ich meinte auch wen es dem sehr nahe kam. Er bleibt zwar auf gleicher Entfernung, jedoch werden die Drehungen des Spielers während der Vorwärtsbewegung nicht ignoriert. Er geht wieder hinter der Figur. Ich möchte aber das auch während der Bewegung die camera nur "ausrichtet" und "verfolgt", bei gleicher Distance. Aber trotzdem danke. mfg Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
PositionEntity camera,EntityX(player),EntityY(player)+4,EntityZ(player)-10 | ||
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke !
hab leider etz keine Zeit des zu testen... Ich hetz von einem Termin zum anderen. Sollte ich noch Fragen haben melde ich mich nochmal (So vom code her, schauts ganz gut aus) ~Edit~ Jo danke nochmal, genau das meinte ich ![]() mfg Dottakopf |
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group