Tutorial für komplette Kamerasteuerung

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Peak7810

Betreff: Tutorial für komplette Kamerasteuerung

BeitragFr, Mai 21, 2004 13:06
Antworten mit Zitat
Benutzer-Profile anzeigen
gesucht wird ein Tutorial, zur Kamerasteuerung mit der Maus, und Tasten.

Eventuell incl. Sprungsequenz, und ohne, dass sich die Kamere bei Mausbewegungen nach links oder rechts dreht.. (sondern nur nach links oder rechts schauen)

Thx

BladeRunner

Moderator

BeitragFr, Mai 21, 2004 16:25
Antworten mit Zitat
Benutzer-Profile anzeigen
gesucht werden 35 Tuts die zusammen ein komplettes Game ergeben ohne dass ich mich anstrengen muss .... Rolling Eyes
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Affje

BeitragFr, Mai 21, 2004 16:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Laufen:

Code: [AUSKLAPPEN]
Geschwindigkeit# = 0.1


Code: [AUSKLAPPEN]
   If KeyDown(17) = 1 Then
      MoveEntity Kamera, 0, 0, Geschwindigkeit#: Abstand = 2
   EndIf
               
   If KeyDown(31) = 1 Then
      MoveEntity Kamera, 0, 0, -Geschwindigkeit#: Abstand = 2   
   EndIf
   
   If KeyDown(30) = 1 Then
      MoveEntity Kamera, -Geschwindigkeit#, 0, 0: Abstand = 2
   EndIf
   
   If KeyDown(32) = 1 Then
      MoveEntity Kamera, Geschwindigkeit#, 0, 0: Abstand = 2
   EndIf


Drehen der Kamera:

Code: [AUSKLAPPEN]

   Winkel = Winkel + MouseYSpeed()
   If Winkel > 45 Then Winkel = 45
   If Winkel < -45 Then Winkel = -45
   TurnEntity Kamera, -EntityPitch(Kamera), 0, 0
   TurnEntity Kamera, Winkel, -MouseXSpeed(), 0


ich hoffe das hilft dir weiter.
www.drachengarde.tk
Guckst da Hier
 

Peak7810

BeitragFr, Mai 21, 2004 17:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Natürlich strenge ich mich an, und habe letzte Nacht bis früh um 4 darüber gebrütet.
Und habe als letzte Möglichkeit hiernach gefragt.

Denn ich hatte die kamerasteuerung bereits, nur dass sich die Kamera halt immer in der Horizontalen drehte.

@afje: Danke hat mir schonmal geholfen

Irgendwas funktioniert hier aber immer noch nicht.

Die Kamera lässt sich nicht mehr auf der Y Achse (glaube ich) bewegen.

Und wenn ich die Maus nach Links oder Rechts bewege, dann schaue ich nicht nach Links oder Rechts, sondern die Kamera dreht sich im Kreis. (als wenn ich von der Seite auf ein Rad schauen würde)

Hier mal der Quelltext. Hoffentlich findet jemand den Fehler, denn ich weiss auch nicht mehr, was ich falsch mache.

Global x = 1024
Global y = 768
Graphics3D x, y, 32, 1
SetBuffer BackBuffer()

Level = LoadMesh("Map.b3d")

Kamera = CreateCamera()
licht = CreateLight(1)

PositionEntity licht, 255, 0, 0
PositionEntity Level, 0, 0, 0
PositionEntity Kamera,0, -1, 0

CameraRange Kamera, 0.1, 10000
MoveMouse x / 2, y / 2

HidePointer()

While Not KeyHit(1)

Geschwindigkeit# = 0.1

If KeyDown(17) = 1 Then
MoveEntity Kamera, 0, 0, Geschwindigkeit#: Abstand = 2
EndIf

If KeyDown(31) = 1 Then
MoveEntity Kamera, 0, 0, -Geschwindigkeit#: Abstand = 2
EndIf

If KeyDown(30) = 1 Then
MoveEntity Kamera, -Geschwindigkeit#, 0, 0: Abstand = 2
EndIf

If KeyDown(32) = 1 Then
MoveEntity Kamera, Geschwindigkeit#, 0, 0: Abstand = 2

EndIf

Winkel = Winkel + MouseYSpeed()
If Winkel > 45 Then Winkel = 45
If Winkel < -45 Then Winkel = -45
TurnEntity Kamera, -EntityPitch(Kamera), 0, 0
TurnEntity Kamera, Winkel, -MouseXSpeed(), 0

PositionEntity Kamera, EntityX(Kamera), EntityY(Kamera),1


RenderWorld
UpdateWorld
Text 10, 10, Distanz
Flip
Wend


End
ClearWorld

TheProgrammer

BeitragFr, Mai 21, 2004 18:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde sagen, dass das Clearworld nach dem End eigentlich
sinnlos ist...
aktuelles Projekt: The last day of human being
 

Peak7810

BeitragFr, Mai 21, 2004 19:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Sicher, aber leider löst das nicht mein Problem.

Testet mal den Quellcode mit einer Map von Euch.

Ich weiss echt nicht mehr weiter...
 

INpac

BeitragFr, Mai 21, 2004 19:57
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm, ka, der code ist sehr seltsam geschrieben, so kompliziert Smile

Code: [AUSKLAPPEN]

rotateentity camera, entitypitch(camera)+mouseyspeed(), entityyaw(camera)-mousexspeed(),0


das sollte ohne probleme laufen.




...
Code: [AUSKLAPPEN]

PositionEntity Kamera, EntityX(Kamera), EntityY(Kamera),1


was soll das?
hat das einen sinn?
 

Affje

BeitragFr, Mai 21, 2004 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
du hast 2 achsen vertauscht, die y und die z achse, deshalb....

Code: [AUSKLAPPEN]
PositionEntity Kamera, EntityX(Kamera), 2, EntityZ(Kamera)


dies ergänzen.

ich hoffe, dass deine map nur eine höhe hat, wenn nicht muss ich nochmal gucken.

hoffe ich konnte helfen.
www.drachengarde.tk
Guckst da Hier
 

Peak7810

BeitragFr, Mai 21, 2004 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Tatsache, ich habe beides vertauscht, aber das Problem lag noch woanders.
Ich selbst habe die beiden Werte vertauscht, ich musste dies tun, wusste aber nicht, dass die Map sozusagen Vertikal statt Horizontal lag.
Muss wohl beim Unwrapping passiert sein.

Habs korrigiert, habe jetzt aber folgendes Problem.

Wenn ich die Kamera auf der X-Achse drehe, um mich umzuschauen, dann geht das nur bis zu einem gewissen Winkel, dann bleibt die Kamera stehen. (das passiert in beiden Richtungen)
Bei einer Drehung um 990 Grad also 2 3/4 Umdrehungen passiert dies.
Gibts da eine Erklärung dafür, und vorallem eine Lösung.

Winkel = Winkel + MouseYSpeed()

If Winkel > 45 Then Winkel = 45
If Winkel < -45 Then Winkel = -45

TurnEntity Kamera, -EntityPitch(Kamera), 0, 0
TurnEntity Kamera, Winkel, -MouseXSpeed(), 0


PositionEntity Kamera, EntityX(Kamera), 0, EntityZ(Kamera)


@affje: bist du so nett, und guckst mal, ich würde gern eine Treppe, mit einer zweiten Ebene einbauen, wie muss ich das dann anstellen. Danke
 

INpac

BeitragSa, Mai 22, 2004 10:17
Antworten mit Zitat
Benutzer-Profile anzeigen
MoveMouse x / 2, y / 2


das hier musste auch noch in die schleife packen, allerdings _nach_ dem abfragen von MouseSpeed()!
 

Peak7810

BeitragSa, Mai 22, 2004 15:11
Antworten mit Zitat
Benutzer-Profile anzeigen
So, jetzt funktionierts.

Aber wie mach ich das jetzt, wenn die Map nicht nur auf einer Y-Konstanten liegt, wenn ich jetzt z.B. eine Treppe mit einer zweiten Etage einbauen will.

Und momentan bleibt die Kamera ja auf dem Boden, aber wenn ich mich auf einer Treppe auf eine nächste Ebene bewege, dann darf die Kamera ja nicht mehr auf dem Boden kleben bleiben.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group