rotateEntity

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

da_poller

Betreff: rotateEntity

BeitragDi, Jul 29, 2008 15:25
Antworten mit Zitat
Benutzer-Profile anzeigen
folgende funktion:
Code: [AUSKLAPPEN]
If KeyDown(205)=1 Then MoveEntity kamera,0.1,0,0
   If KeyDown(203)=1 Then MoveEntity kamera,-0.1,0,0
   If KeyDown(208)=1 Then MoveEntity kamera,0,0,-0.1
   If KeyDown(200)=1 Then MoveEntity kamera,0,0,0.1
   
   mausy=MouseY
   mausy=MouseX
   If mausy<oldmausy Then pitch#=pitch#+1 And oldmausy=mausy
   If mausy>oldmausy Then pitch#=pitch#-1 And oldmausy=mausy
   If mausx<oldmausx Then yaw#=yaw#+1 And oldmausx=mausx 
   If mausx>oldmausx Then yaw#=yaw#-1 And oldmausx=mausx
   RotateEntity kamera,pitch#,yaw#,0


funktionieren tut die tastaturbewegung

aber die maussicht macht keinen muks.. wo könnte mein fehler hier liegen..?

Xeres

Moderator

BeitragDi, Jul 29, 2008 15:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Übliches Missverständnis: AND ist nicht dafür da dem Programm zu sagen, dass es mehrere Anweisungen ausführen soll - es tut in jedem Fall alles was hintereinander folgt. Um mehrere Befele in einer Zeile abzugrenzen nutzt man den Doppelpunkt:
Code: [AUSKLAPPEN]
If mausy<oldmausy Then pitch#=pitch#+1 : oldmausy=mausy
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

da_poller

BeitragDi, Jul 29, 2008 15:44
Antworten mit Zitat
Benutzer-Profile anzeigen
das and hab ich jetzt mal durch nen : ersetzt aber noch immer kann ich nur mit genickstarre durch mein tolles level rennen.. xD

nunja vllt ist der gesamte code hilfreich mal hab den auch nun shcon etwas umgestellt..

ps.. fals einige dinge unsauber programiert sind bitte nur tipps geben wie ich verbessern könnte.. ist mein 2ter 3d versuch
Code: [AUSKLAPPEN]

lobal kamera,licht,terrain,terrain_tex,mausx,mausy,oldmausy,oldmausx
Global x#,y#,z#,terra_y#,pitch#,yaw#

Graphics3D 800,600,16,1
SetBuffer BackBuffer()

kamera=CreateCamera();kamera erstellen
PositionEntity kamera,1,1,1;kameraposition
licht=CreateLight();licht
RotateEntity licht,90,0,0;lichteinstellungen

terrain=LoadTerrain("map.bmp");terrain laden
TerrainDetail terrain,4000,True;terrain einstellungen

terrain_tex=LoadTexture("map_tex.bmp");textur laden
EntityTexture terrain,terrain_tex;textur an terrain binden

While Not KeyHit(1)
   steuerung()
   RenderWorld
   Flip
Wend
End

Function steuerung()
   ;tastaturbewegung
   If KeyDown(205)=1 Then MoveEntity kamera,0.1,0,0
   If KeyDown(203)=1 Then MoveEntity kamera,-0.1,0,0
   If KeyDown(208)=1 Then MoveEntity kamera,0,0,-0.1
   If KeyDown(200)=1 Then MoveEntity kamera,0,0,0.1
   x#=EntityX(kamera):y#=EntityY(kamera):z#=EntityZ(kamera)
   terra_y#=TerrainY(terrain,x#,y#,z#)+5 ;kammera 5 units über aktueller terrainhöhe positionieren
   PositionEntity kamera,x#,terra_y#,z#;kamera verschieben
   ;maussicht
   mausy=MouseY
   mausx=MouseX
   If mausy<oldmausy Then pitch#=pitch#+1 : oldmausy=mausy
   If mausy>oldmausy Then pitch#=pitch#-1 : oldmausy=mausy
   If mausx<oldmausx Then yaw#=yaw#+1 : oldmausx=mausx 
   If mausx>oldmausx Then yaw#=yaw#-1 : oldmausx=mausx
   RotateEntity kamera,pitch#,yaw#,0
End Function

Meoqan

BeitragDi, Jul 29, 2008 16:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

nach kurzerm anschauen kann ich dir sagen das:

;maussicht
mausy=MouseY
mausx=MouseX

so richtig ausschaut:

;maussicht
mausy=MouseY()
mausx=MouseX()

besser wäre:

;maussicht
msx=MouseXSpeed()
msy=MouseYSpeed()

pitch#=pitch#+msy Mod 360
yaw#=yaw#-msx Mod 360

RotateEntity kamera,pitch#,yaw#,0


mfg Meo
meine codes sind die essenz des bössen. nicht du veränderst meine codes sondern meine codes verändern dich!

Thorsten

BeitragDi, Jul 29, 2008 16:41
Antworten mit Zitat
Benutzer-Profile anzeigen
MouseX / MouseY geben ohne die Klammern dahinter () keinen Wert zurück.

MouseX, MouseY

Um aber wirklich eine Maussteuerung zu haben solltest du die Differenz aus dem alten und neuen MouseX()/MouseY() bilden und daraus rotieren.

Achja, und : bevor du nächstes mal eine Frage stellst, check doch einfach erstmal die ganzen Werte die du benutzt!

mfG,

Thorsten

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group