Kamera nach Maus

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Megamag

Betreff: Kamera nach Maus

BeitragFr, Mai 02, 2008 11:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!
Ich möchte für mein Spiel eine Steuerung einbauen. Man kann mit der Maus frei die umgebung betrachten, und wenn man den Pfeil nach oben drück, läuft man in die Richtung, in die die Maus gerade zeigt, nur ohne oben und unten. Etwa so wie hier, nur dass da noch ein Player vor die Kamera gehört:
http://www.youtube.com/watch?v...re=related
Wie ist so etwas möglich?

Megamag

BeitragSa, Mai 03, 2008 12:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Sorry wegen des Doppelposts, aber ich habe im Example-Ordner "Scare" gefunden. Das ist eigentlich schon gut, aber ich habe die Codes nicht verstanden, kann mir vielleicht jemand sagen, wie das da gemacht wird?

ToeB

BeitragSa, Mai 03, 2008 13:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Dazu brauchst du die MouseXSpeed und MouseYSpeed und die camera immer danach drehen (vergiss das MoveMouse nicht sonst dreht der sich nie ganz rum Wink ) :

Zitat:
TurnEntity cam,MouseYSpeed(),0,0
TurnEntity cam,0,MouseXSpeed(),0,1
MoveMouse GraphicsWidth()/2,GrphicsHeight()/2



mfg Crack93
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Megamag

BeitragSa, Mai 03, 2008 13:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke!

ToeB

BeitragSa, Mai 03, 2008 13:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber ich glaub, die Forensuche hast du nicht genutz... Da kam sowas schon hundert mal vor...


mfgCrack93 Wink
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Megamag

BeitragSa, Mai 03, 2008 13:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Doch schon, und ich habe auch was gefunden, aber nicht verstanden.

Megamag

BeitragSa, Mai 03, 2008 14:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, Mann...
Ich versteh' einfach nicht, was jetzt kommt...
Also, ich habe folgenden Code:
Code: [AUSKLAPPEN]
Graphics3D 800,600,32,1
SetBuffer BackBuffer()

Licht=CreateLight()

spieler=CreateCube()

Kamera=CreateCamera()
PositionEntity Kamera,0,3,0
PositionEntity spieler,0,0,30

Text=CreateTexture( 32,32,8 )
ScaleTexture Text,10,10
SetBuffer TextureBuffer(Text)
Color 0,0,64:Rect 0,0,32,32
Color 0,0,255:Rect 0,0,32,32,False
SetBuffer BackBuffer()

plane=CreatePlane()
PositionEntity plane,0,0,0
EntityTexture plane,Text




While Not KeyHit(1)



Mx#=MouseXSpeed()
My#=MouseYSpeed()
TurnEntity spieler,0,-Mx/2,0
TurnEntity Kamera,My/2,0,0
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2


UpdateWorld
RenderWorld
Flip
Wend

Aber es muss ja jetzt folgendes eintreten:
Die Kamera muss sich um den Player drehen, der Player steht praktisch immer im Mittelpunkt. Die Kamera muss sich nach der Maus drehen. Die Kamera muss sich aber so drehen, dass man den Boden nicht von unten sehen kann, sie darf sich also nicht in irgendwelche Objekte reindrehen. Das ganze muss dann am Ende irgendwie sein, wie "Rayman M - Lum Fight", falls das irgendeiner von euch mal gespielt hat. Ich komm einfach nicht weiter...



EDIT:
Ich habe gerade im Internet ein Spiel gefunden. So in etwa soll meines auch werden. Damit ihr es euch besser vorstellen könnt: http://www.miniclip.com/games/trech-2/de/
  • Zuletzt bearbeitet von Megamag am Sa, Mai 03, 2008 15:17, insgesamt einmal bearbeitet

D2006

Administrator

BeitragSa, Mai 03, 2008 15:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Blitz4D hat Folgendes geschrieben:
Sorry wegen des Doppelposts


Das impliziert für mich irgendwie, du wüsstest ganz genau, dass hier Doppelposts nicht erlaubt sind und trotzdem hast du hier schon zwei fabriziert. Also: Die sind verboten, auch wenn man sich dafür entschuldigt. Das spielt keine große Geige. Du bist jetzt hiermit gewarnt, dass bei Wiederholung angefangen wird, deine entsprechenden Threads zu schließen.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

ToeB

BeitragSa, Mai 03, 2008 16:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn der Player immer an einer festen Position sein soll dann kannst du es entwededer so machen :
Code: [AUSKLAPPEN]
spieler = CreateCube(cam)

(Näheres : Siehe CreateCube)
oder
Code: [AUSKLAPPEN]
spieler = CreateCube()
EntityParent spieler,cam

(Näheres : siehe EntityParent)

Wenn du aber die willst, dass die Kamera sich so dem spieler hinterzieht, muss du dass selber machen (mit Pivot oda so...)


mfg Crack93
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

StepTiger

BeitragSa, Mai 03, 2008 16:17
Antworten mit Zitat
Benutzer-Profile anzeigen
also wenn ich das richtig sehe, dann muss das so in der art sein:

Code: [AUSKLAPPEN]

player=CreateEntity()
cam=CreateCamera(piv)
MoveEntity cam,0,3,-5


und jetzt hast du nen player und dahinter deine cam.

Allerdings dreht sich die Kamera jetzt auch mit, wenn der player sich dreht.

@Crack:
Warum den Spieler als Child von der Kamera?
Die Kamera soll doch vom Spieler abhängig gemacht werden, oder versteh ich da was falsch?
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Megamag

BeitragSa, Mai 03, 2008 16:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, richtig.
Der Player soll stehen bleiben und sich nach der Maus drehen, die Kamera blaibt dabei immer hinter ihm.

StepTiger

BeitragSa, Mai 03, 2008 16:51
Antworten mit Zitat
Benutzer-Profile anzeigen
jop, dann tut's das so wie in meinem code ^^

gibt natürlich noch viel viel schönere varianten, aber das ist ja erstmal egal ^^
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Megamag

BeitragSa, Mai 03, 2008 16:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Was meinst du mit "piv"?
 

Code der Verwirrung

BeitragSa, Mai 03, 2008 18:09
Antworten mit Zitat
Benutzer-Profile anzeigen
pivot.... auf deutsch drehpunkt oder so... pivots kann man zusätzlich einfügen um z.b. kammerrotationen hinzubekommen. ein pivot ist "unsichtbar".

Megamag

BeitragSo, Mai 04, 2008 10:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wo mache ich diesen Pivot hin?

The_Nici

BeitragSo, Mai 04, 2008 20:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

pivot=Createpivot()
camera=Createcamera()
Positionentity camera, 0,3,3
Entityparent camera, pivot

;Dann in der Hauptschleife
Turnentity pivot, MouseXSpeed(), -MouseYSpeed()

Sollte so eigentlich gehen.

Megamag

BeitragMo, Mai 05, 2008 8:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Tut mir leid, aber das funktioniert gar nicht.
Wenn man die Maus bewegt, dann ligt die plötzlich schräg
und wackelt in einem komischen Winkel hin und her...

The_Nici

BeitragMo, Mai 05, 2008 10:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Och Mensch, tut es einfach?

Dann liegts drann das EntityRoll sich verändert!

Lösungsvorschlag: RotateEntity pivot, EntityPitch(pivot)+MouseXSpeed(), EntityYaw(pivot)-MouseYSpeed(), 0

Besser?

Megamag

BeitragMo, Mai 05, 2008 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Äh...
Nö.
Hier ist der Code, probier ihn mal aus...
Code: [AUSKLAPPEN]
Graphics3D 800,600,32,1
SetBuffer BackBuffer()

Licht=CreateLight()

spieler=CreateCube()

pivot=Createpivot()
camera=CreateCamera()
PositionEntity camera, 0,3,3
EntityParent camera, pivot




PositionEntity spieler,0,0,30

Text=CreateTexture( 32,32,8 )
ScaleTexture Text,10,10
SetBuffer TextureBuffer(Text)
Color 0,0,64:Rect 0,0,32,32
Color 0,0,255:Rect 0,0,32,32,False
SetBuffer BackBuffer()

plane=CreatePlane()
PositionEntity plane,0,0,0
EntityTexture plane,Text




While Not KeyHit(1)



;Dann in der Hauptschleife
RotateEntity pivot, EntityPitch(pivot)+MouseXSpeed(), EntityYaw(pivot)-MouseYSpeed(), 0




UpdateWorld
RenderWorld
Flip
Wend

The_Nici

BeitragMo, Mai 05, 2008 16:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst noch viel lernen, junger padawan. ^.^

1. benutze keine Variablenamen die gleich heissen wie Funktionen 8Einfach aus sicherheit
2. rücke deine Codes ein
3. versuche mal selber mit Text zu debuggen.

Scheinbar kommt die Cam nicht über -90°, weiss der Teufel warum, liegt wohl an der Blitzinternen Rotationstechnik, hab ich mal gehört.
Mein
Code: [AUSKLAPPEN]

Graphics3D 800,600,32,2
SetBuffer BackBuffer()

Licht=CreateLight()

spieler=CreateCube()
PositionEntity spieler, 0,0,30

pivot=CreatePivot(spieler)
camera=CreateCamera()
PositionEntity camera, 0,3,3
PointEntity camera, pivot
EntityParent camera, pivot





Tex=CreateTexture( 32,32,8 )
ScaleTexture Tex,10,10
SetBuffer TextureBuffer(Tex)
Color 0,0,64:Rect 0,0,32,32
Color 0,0,255:Rect 0,0,32,32,False
SetBuffer BackBuffer()

plane=CreatePlane()
PositionEntity plane,0,0,0
EntityTexture plane,Tex




While Not KeyHit(1)

   ;Dann in der Hauptschleife
   TurnEntity pivot, -MouseYSpeed(), MouseXSpeed(), 0
   RotateEntity pivot, EntityPitch(pivot), EntityYaw(pivot), 0
   PointEntity camera, pivot
   MoveMouse 400,300

   UpdateWorld
   RenderWorld
   Text 0,0,EntityPitch(pivot)
   Text 0,12,EntityYaw(pivot)
   Text 0,24,EntityRoll(pivot)

   Flip
Wend


Wie du siehst habe ich Turn und Rotate voneinander getrennt, zuerst wird geturnt und dann wieder die Roll-Achse auf 0 gesetzt. Desweiteren ist der Pivot nun child des spielers.

Und bitte kopiere in Zukunft die codes nicht einfach ab sondern verstehe sie.

MfG

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group