Dreh Funktion

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

spidey

Betreff: Dreh Funktion

BeitragSo, Jan 08, 2006 12:19
Antworten mit Zitat
Benutzer-Profile anzeigen
HeY Forum
Guten Morgen...

Also ich beschäftige mich jetzt mit BB3D seit ein paar Tagen, genauer gesagt seit Freitag..
Ich hab schon viele TuTs zu allen möglichen Themen angeschaut...
Nun da dachte ich, ich probier's jetzt selbst..
Schließlich habe ich durch die Hilfe (anderer Posts)
schon eine Menge zusammen bekommen
Hauptmenü etc...

Also mein Problem ist

ich möchte mit der Maus das Object in meinen Fall die Camera
drehen..
Also im Tutorial (Kollision) war als Object sphere gegeben.. dieses gab ich
statt sphere=CreateSphere() folgenden Wert sphere=CreateCamera()
nun es hat auch funktionier..Das Problem aber, wie schon ewähnt, möchte ich sphere mit der maus drehen können
Folgender Code:
Code: [AUSKLAPPEN]
While Not KeyDown(1)
x#=0
y#=0
z#=0
MoveMouse sphere 1,-1 ;Hier stand 2 mal die TurnEnity funktion... jeweils in einer anderen Richtung
If KeyDown(31)=1 Then MoveEntity sphere,0,0,-0.5
If KeyDown(17)=1 Then MoveEntity sphere,0,0,0.5
If KeyDown(203)=1 Then x#=-0.3
If KeyDown(205)=1 Then x#=0.3
If KeyDown(208)=1 Then z#=-0.3
If KeyDown(200)=1 Then z#=0.3
MoveEntity sphere,x#,-0.5,z#
Collisions 1,2,2,0
UpdateWorld
RenderWorld
col=CountCollisions(cylinder)
Flip
Wend


Ich habs seit Gestern versucht, heute gab ichs auf *fg* naja

Danke im Voraus

MfG Spidey

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Jan 08, 2006 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi spidey, erstmal willkommen auf diesem Forum...
Um eine Maussteuerung zu machen kannst du folgendes anwenden...Code: [AUSKLAPPEN]
mxs=MouseXSpeed()
mys=MouseYSpeed()
MoveMouse 200,200
TurnEntity sphere,mys,0,mxs
Wichtig ist hier, daß MoveMouse immer nach einer Mausabfrage wieder in die 'Mitte' des Bildschirmes bewegt wird. Ansonsten kann man nicht unendlich weiter drehen da die Maus ja irgendwann an den Seiten des Bildschirmes angekommen ist. Statt MoveMouse 200,200 würde ich jeweils die Hälfte der Bildschirmbreite und die Hälfte der Bildschirmhöhe anlegen. Also zB bei Graphics 800,600: MoveMouse 400,300
 

spidey

BeitragSo, Jan 08, 2006 15:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal danke...

Also zu der Mausbewegung danke die Funktioniert ..aber wenn ich die Maus nach Oben oder Unten bewege,dann fährt das Object jeweils nach Vorne bzw Rückwärts.

Also kurz gesagt
wenn ich Raufschau fahr ich Vorwärts
wenn ich runterschau Rückwärts

Code:Code: [AUSKLAPPEN]
While Not KeyDown(1)
RotateEntity sphere,EntityPitch(sphere)+MouseYSpeed(),EntityYaw(sphere)-MouseXSpeed(),0
x#=0
y#=0
z#=0
mxs=MouseXSpeed()
mys=MouseYSpeed()
MoveMouse 200,200
TurnEntity sphere,mys,0,mxs
If KeyDown(31)=1 Then z#=-0.1
If KeyDown(17)=1 Then z#=0.1
MoveEntity sphere,x#,-0.1,z#
Collisions 1,2,2,2
UpdateWorld
RenderWorld
col=CountCollisions(sphere)

Flip
Wend
End


Was ich vermute, das liegt an der Funktion
MoveEntity sphere,x#,-0.1,z#

danke Erstmal..
MfG spidey

[/syntax]

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Jan 08, 2006 16:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Also erstmal was vorweg...
Code: [AUSKLAPPEN]
RotateEntity sphere,EntityPitch(sphere)+MouseYSpeed(),EntityYaw(sphere)-MouseXSpeed(),0

RotateEntity dreht ein Objekt auf ein bestimmten Winkel egal wie es zuvor gedreht war.
TurnEntity dreht ein Objekt auf ein bestimmten Winkel relativ zu dem wie es vorher war.

Das heisst, daß dein Code da oben auch so gelöst werden kann.
Code: [AUSKLAPPEN]
TurnEntity sphere,MouseYSpeed(),-MouseXSpeed(),0

Dann würde ich vorschlagen nicht alles durcheinander zu programmieren. Auch in einer Schleife nach Möglichkeit 'sortieren'. Ich mache das immer so Maus/Tastatur-Abfrage, Variablenberechnungen, Bildschirmausgabe... Wenn Mouse(XYZ)Speed angewand wird, dann ist es nicht ratsam die gleiche Achse innerhalb einer Schleife mehr als einmal abzufragen. Speichere die Werte dann vorher in Variablen ab.

Zu deinen Frage: Um eine Umkehrung der Bewegung zu bewirken, sollte z#=-0.1 zu + und + zu - gémacht werden. Was soll eigentlich bei MoveEntity sphere,x#,-0.1,z# die -0.1 bewirken?
 

spidey

BeitragSo, Jan 08, 2006 16:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey

Also der Wet -0.1 bewirkt im diesen Fall die Schwerkraft
wenn ich den Wert auf 0.0 ändere, dann schwebe ich in der Luft..

mh ich blick da imma noch ned durch
wie und warum ich mich bewege wenn die Maus nach oben bzw unten..zeigt

mfg Spidey

lucifer

BeitragSo, Jan 08, 2006 16:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst statt moveentity für die Schwerkraft TranslateEntity benutzen. TranslateEntity berücksichtigt die Rotation des Entity nicht und deswegen bewegst sich die Kamera dann immer nach unten.
Aktuelles Projekt:
Demonspawn
RPG

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group