Auch n Kameraproblem, aber nicht so einfach ;)
Übersicht

![]() |
MCWulfBetreff: Auch n Kameraproblem, aber nicht so einfach ;) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo!
Zur Zeit bewege ich meine Kamera so, wie es hier schonmal im Forum stand: BlitzBasic: [AUSKLAPPEN]
So, wenn ich jetzt nach unten schaue (umschaun tu ich mich mit der Maus) und dann W (also nach "vorne") drücke, dann fliegt meine Kamera auch da hin, wo ich schaue. Jetzt will ich den gleichen Code für die Pfeiltasten so schreiben, dass wenn ich nach oben drücke die kamera sich auch parallel zum boden bewegt, also immer den gleichen abstand zum boden hat. Ich habs so mal ausprobiert, was eigentlich auch funktionieren müsse: BlitzBasic: [AUSKLAPPEN]
Doch das ruckelt dann wie sau im Spiel. Kann man ein Entity vielleicht sagen, warte noch schnell mit dem Anzeigen!, oder wie könnte man das lösen? Hoffe ihr versteht mein Problem und bedanke mich schonmal ![]() EDIT: So, weils mir gerade einfällt noch n Kameraproblem mit der Maus. Die Maus benutze ich zur Zeit wie folgt, um mich umzuschaun: BlitzBasic: [AUSKLAPPEN]
Funktioniert auch prima, aber nur, wenn die Maus zuvor in der Mitte vom Bildschirm ist. Denn wenn sie weiter weg ist, und dann im Code in die Mitte plaziert wird, dann "springt" die kamera, weil sie denkt, man hätte die maus ja bis zur Mitte bewegt. Was könnte man da dagegen machen? MfG MCWulf |
||
Klaas |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mit einem Pivot ist das einfach gemacht.
Das Problem mit der Mouseposition kannst du umgehen in dem du einmal vor der Hauptschleife kurz die Mousebewegung ausliest, denn es wird immer nur die differenz zwischen den letzten auslesen von Mousespeed zurückgegeben. Code: [AUSKLAPPEN] pivot=CreatePivot() camera=CreateCamera(pivot ) CameraClsColor camera,20,20,20 CameraRange camera,1,4000 MoveMouse graphicswidth() / 2,graphicsheight() / 2 dump = MouseXSpeed() dump = MouseySpeed() While Not KeyHit(1) ; ################################## Mouse movement Local x_speed#,y_speed# x_speed=(MouseXSpeed()-x_speed)/2+x_speed y_speed=(MouseYSpeed()-y_speed)/2+y_speed MoveMouse graphicswidth() / 2,graphicsheight() / 2 TurnEntity pivot,0,-x_speed,0 ;turn player left/right TurnEntity camera,y_speed,0,0 ;tilt camera If KeyDown(205) MoveEntity pivot,1,0,0 End If If KeyDown(203) MoveEntity pivot,-1,0,0 End If If KeyDown(200) MoveEntity pivot,0,0,1 End If If KeyDown(208) MoveEntity pivot,0,0,-1 End If If KeyDown(30) MoveEntity pivot,0,1,0 End If If KeyDown(44) MoveEntity pivot,0,-1,0 End If RenderWorld() Flip Wend |
||
![]() |
MCWulf |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok, also mit nem pivot versuch ichs mal, aber das problem is bei der maus, das der code immer bei gedrücktem rechtsklick ausgeführt wird (sry, dass ich es nicht erwähnt habe ^^')
BlitzBasic: [AUSKLAPPEN]
und wenn jetzt die maus nicht am mittelpunkt ist und man drückt rechts, dann denk der eben, dass man die maus bewegt hat, weil sie dann in der if wieder in den mittelpunkt gesetzt wird. |
||
Klaas |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
dann mußt du einmal zu anfang wenn die rechte Maustatse gedrückt wurde die Position auslesen.
Ich hab hier das nicht getestet aber so sollte es gehen Code: [AUSKLAPPEN] If MouseDown(2) Then if not rm_init then rm_init = true MoveMouse 1024/2, 768/2 dump = MouseXSpeed() dump = MouseySpeed() end if mxs#=-MouseXSpeed() /3.0 mys#=MouseYSpeed() /3.0 . . . else rm_init = false endif |
||
![]() |
MCWulf |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok, vielen dank, werd ich gleich einbaun, jetzt hab ich nur noch ein problem!
BlitzBasic: [AUSKLAPPEN]
So sieht jetzt mein Code aus. Jedoch wenn ich mich nun vom Ausgangspunkt wegbewege und mich dann wieder drehen will, dreht sich die Kamera bzw der pivot um den Ausgangspunkt. er soll sich aber um die aktuelle position drehen. Mach ich etwa immer noch was falsch? |
||
Klaas |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
du darfst die Kamera nicht bewegen. Die Kamera darf lediglich um die x-Achse gedreht werden, alle anderen Bewegungen / Drehungen solltest du den Pivot machen lassen
Code: [AUSKLAPPEN] If KeyDown(31) Then MoveEntity Kamera, 0,0,-1 * TimeLoop / 10 If KeyDown(17) Then MoveEntity Kamera, 0,0, 1 * TimeLoop / 10 Hiermit bewegst du die Kamera von dem Pivot weg ... und wenn du dann den Pivot drehst fliegt die Kamera um den Pivot herrum |
||
![]() |
MCWulf |
![]() Antworten mit Zitat ![]() |
---|---|---|
achso, ok, vielen dank!! | ||
![]() |
MCWulf |
![]() Antworten mit Zitat ![]() |
---|---|---|
aber jetzt bewegt sich die kamera nicht mehr dahin, wohin man gerade schaut, sondern sie bleibt auf der gleichen y-ebene... und jetzt? ![]() |
||
Klaas |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: So, wenn ich jetzt nach unten schaue (umschaun tu ich mich mit der Maus) und dann W (also nach "vorne") drücke, dann fliegt meine Kamera auch da hin, wo ich schaue. Jetzt will ich den gleichen Code für die Pfeiltasten so schreiben, dass wenn ich nach oben drücke die kamera sich auch parallel zum boden bewegt, also immer den gleichen abstand zum boden hat. äääääääääähhhhh .... sagtest du nicht das du das so haben wolltest !? |
||
![]() |
MaTrixCruiser |
![]() Antworten mit Zitat ![]() |
---|---|---|
Unentschlossen?!
Willst du die steuerung wie in einem Ego-shooter? wie counter-strike? |
||
Amd 64 3200+ (939 winchester)
nvidea 6600gt (PCI-E) 1024 ddr400 200GB HDD S |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@MCWulf
Camera drehen um X=hoch/runter gucken (aber nicht zu weit!also Winkel begrenzen) Pivot drehen um Y=links/rechts drehen Pivot bewegen Z = vor/zurück Pivot bewegen X = links/rechts Pivot bewegen Y = hoch/runter Also alles mit TurnEntity und MoveEntity, die Kamera hängt an dem Pivot . Ich glaube so willst du es haben ... |
||
![]() |
MCWulf |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also: auf den tasten wasd will ich mich im raum bewegen, wo die kamera gerade hinschaut, also wenn die kamera nach oben schaut, will ich auf W auch noch oben gehen. bei den pfeiltasten will ich nur auf der gleichen y-ebene bleiben. versteht ihr? ![]() |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dann einfach den Pivot auf die Winkel der Camera setzen,
bewegen (Z) und wieder zurück setzen wie vorher . |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group