Movemouse
Übersicht

![]() |
valera_rusBetreff: Movemouse |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo wieder einmal!
Code: [AUSKLAPPEN] Graphics3D 1024,768 SetBuffer BackBuffer() Collisions 1,2,2,2 camera=CreateCamera() PositionEntity camera,0,-12,0 CameraRange camera,.1,200 EntityType camera,1 mesh=LoadMesh( "Tutorial Map.b3d" ) PositionEntity mesh,0,0,0 EntityFX mesh,1 EntityType mesh,2 While Not KeyHit (1) MoveEntity camera,0,-0.1,0 If KeyDown(200) MoveEntity camera,0,0,0.07 If KeyDown(208) MoveEntity camera,0,0,-0.07 If KeyDown(203) TurnEntity camera,0,2,0 If KeyDown(205) TurnEntity camera,0,-2,0 UpdateWorld RenderWorld Flip Wend End Ich hab schon unmengen an Sachen probiert wie ich mit der maus die Kamera steuern kann. Ich komme nie zu einem richtigen konzept!+ Hab auch schon in der OH nachgesehen doch dat hat auch nichts genützt! Jez breuchte ich eure hilfe! |
||
![]() |
Lunatix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Guck dir mal
Code: [AUSKLAPPEN] MouseXSpeed()
Code: [AUSKLAPPEN] MouseYSpeed()
Code: [AUSKLAPPEN] MoveMouse x#,y#
an ![]() ![]() |
||
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen... |
![]() |
valera_rus |
![]() Antworten mit Zitat ![]() |
---|---|---|
JEZ:
Code: [AUSKLAPPEN] Graphics3D 1024,768 SetBuffer BackBuffer() Collisions 1,2,2,2 camera=CreateCamera() PositionEntity camera,0,-12,0 CameraRange camera,.1,200 EntityType camera,1 mesh=LoadMesh( "Tutorial Map.b3d" ) PositionEntity mesh,0,0,0 EntityFX mesh,1 EntityType mesh,2 MouseXSpeed() MouseYSpeed() While Not KeyHit (1) MoveEntity camera,0,-0.1,0 MoveMouse x,y If KeyDown(200) MoveEntity camera,0,0,0.07 If KeyDown(208) MoveEntity camera,0,0,-0.07 UpdateWorld RenderWorld Flip Wend End Aber die Maus hengt im rechten oberen eck und sie bewegt die kamera nicht |
||
![]() |
Christoph |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du kannst ja nicht einfach die Befehle irgendwo hinstellen. Das sind Funktionen, die
einen Wert zurückgeben,der dann verloren geht (zumindest bei dir)... ![]() KAPITEL 1: 1.1.1.1. Wert sichern: Code: [AUSKLAPPEN] X=mousexspeed():y=mouseyspeed()
Du hast jetzt den Wert in X,y gesichert,d.h. du weißt um wieviel Pixel sich die Maus seit dem letzten Aufruf bewegt hat. INFO: Die Befehle müssen in der Schleife stehen sonst wird am Anfang nur einmal abgefragt und dann nicht mehr!!! 1.1.1.2.Wert nutzen: Was bringt eine unbenutzte Variable??? Code: [AUSKLAPPEN] turnentity Camera,Y,X,0
1.1.1.3. ACHTUNG MAUS Irgendwann hängt die Maus an der rechten Seite des Bildschirms und man kann nicht mehr weiter nach rechts schauen. Deshalb... Code: [AUSKLAPPEN] Movemouse GMX/2,GMY/2
...wird die Maus immer in die Mitte des Bildschirms gesetzt.(Glaub ich sollte mal nen Buch schreiben. ![]() Habst du Kapitel 1.1.1.1-3 verstanden??? ![]() ![]() ![]() |
||
![]() |
Thorsten |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mouse(X/Y)Speed() zeigt einen Positiven Wert bei Verschiebung nach rechts/unten und einen negativen Wert bei Verschiebung nach links/oben.
Wenn sich die Maus nicht mehr bewegt, springt der Wert wieder auf 0! d.h. es muss nicht "X=mousexspeed():y=mouseyspeed()" heißen sondern eher "X=X + mousexspeed(): y=y +mouseyspeed()" oder weil das etwas zu langsam ist sogar X = X + (MouseXSpeed() * Faktor) : Y = Y + (MouseYSpeed() * Faktor) (Klammern müssen nicht sein, werden aber trotzdem gesetzt ![]() Je nachdem musst du die Variable Faktor dann anpassen (Global nicht vergessen! ![]() wenn ich mich jetzt völlig irre dürft ihr mich schlagen xD cya, BlindGuy |
||
![]() |
valera_rus |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Graphics3D 1024,768 SetBuffer BackBuffer() Collisions 1,2,2,2 camera=CreateCamera() PositionEntity camera,0,-12,0 CameraRange camera,.1,200 EntityType camera,1 mesh=LoadMesh( "Tutorial Map.b3d" ) PositionEntity mesh,0,0,0 EntityFX mesh,1 EntityType mesh,2 While Not KeyHit (1) X=MouseXSpeed() Y=MouseYSpeed() TurnEntity Camera,Y,X,0 MoveMouse x,y If KeyDown(200) MoveEntity camera,0,0,0.07 If KeyDown(208) MoveEntity camera,0,0,-0.07 UpdateWorld RenderWorld Flip Wend End Geht nur nach rechts und unten zu scrollen! Und es stehrt vollkras am kopf |
||
![]() |
Thorsten |
![]() Antworten mit Zitat ![]() |
---|---|---|
hm...hab ich nichts gerade irgendwas gesagt??? ![]() ![]() wieso baust du das nicht einfach in deinen code ein? |
||
![]() |
sirokuhl |
![]() Antworten mit Zitat ![]() |
---|---|---|
du musst mit movemouse die maus in die mitte des bildschirms setzen
und da du x und y dafür benutzt wird sie nie ganz in die mitte gesetzt, sonderen bleibt irgendwo oben links hängen statt x und y nimm die koordinaten des bildschirmmittelpunktes, dann funkionierts |
||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. um die Maus in der Mitte des Bildschirms zu setzen musst du die Fenster Breite und Höhe in Variablen speichern und durch 2 teilen, an diese Koordinaten setzt du dann die maus
Code: [AUSKLAPPEN] Breite = 800 Hoehe = 600 . . . movemouse (Breite/2), (Hoehe/2) 2. Das die kamera irgenwo steht ist klar, besonders wenn du die Maus schnell bewegst mache einfach folgendes: Code: [AUSKLAPPEN] X=MouseXSpeed()/1000 Y=MouseYSpeed()/1000 Falls es dir nun zu langsam seien sollte, setze den Faktor weiter nach unten, bis es dir gefällt Ein Tipp, in der onlinehilfe stehen nicht nur die Befehle beschrieben, sondern es sind auch noch samples dazu im Unteren Bereich zu finden, einfach mal anschauen und ausführen, das hilft. Solltest du es jetzt immer noch nicht verstanden haben, kann ich dir auch nicht mehr helfen. |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
- Zuletzt bearbeitet von skey-z am Mi, Mai 10, 2006 19:29, insgesamt einmal bearbeitet
![]() |
Thorsten |
![]() Antworten mit Zitat ![]() |
---|---|---|
...nicht
ich kann nur noch das wiederholen was ich schon einmal gesagt habe: Mouse(X/Y)Speed() ist KEINE Bildschirmposition sondern eine Variable die die Bewegung IN DEM MOMENT abfängt. Da wird dann nur 1,0 oder -1 ausgegeben! sry, aber nochmal sag ich das nicht ![]() cya, BlindGuy EDIT:Nagut war doch nicht ganz richtig, es wird mehr als 1 oder weniger als -1 ausgegeben, ist aber im Prinzip egal! |
||
![]() |
valera_rus |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielleicht gehe ich wuch schon auf die nerven aber:
Code: [AUSKLAPPEN] Graphics3D 1024,768 SetBuffer BackBuffer() Collisions 1,2,2,2 camera=CreateCamera() PositionEntity camera,0,-12,0 CameraRange camera,.1,200 EntityType camera,1 mesh=LoadMesh( "Tutorial Map.b3d" ) PositionEntity mesh,0,0,0 EntityFX mesh,1 EntityType mesh,2 While Not KeyHit (1) MoveEntity camera,0,-0.1,0 MoveMouse 512, 384 X=MouseXSpeed()/1000 Y=MouseYSpeed()/1000 If KeyDown(200) MoveEntity camera,0,0,0.07 If KeyDown(208) MoveEntity camera,0,0,-0.07 MoveMouse x,y UpdateWorld RenderWorld Flip Wend End Die maus is in der mitte aber wenn ich sie bewege is nichts! Die camera soll sich aber mitbewegen! Danke! |
||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich habe mir deinen Code 2sek lang angeschaut und weiß woran es liegt, aber such selber mal danach, es sticht eigentlich sofort ins auge | ||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
![]() |
Thorsten |
![]() Antworten mit Zitat ![]() |
---|---|---|
Habt ihr mich irgendwie auf ignorieren geschaltet?? ![]() so wird es nie funktionieren |
||
![]() |
valera_rus |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich dachte mir hier wird einen geholfen!
AUF WIEDERSEHN! |
||
![]() |
Thorsten |
![]() Antworten mit Zitat ![]() |
---|---|---|
was solld er scheiß denn, wenn du keine ratschläge annimst, wirst du es eh nie schaffen ![]() |
||
![]() |
valera_rus |
![]() Antworten mit Zitat ![]() |
---|---|---|
OK; JEZ HABE ICH ALLE FEHLER DIE ICH GEFUNDEN HABE AUFGEHOBEN UND MICH NACH DEINEN VOR$CHRIFTEN GEHALTEN!
Code: [AUSKLAPPEN] Graphics3D 1024,768 SetBuffer BackBuffer() Collisions 1,2,2,2 camera=CreateCamera() PositionEntity camera,0,-12,0 CameraRange camera,.1,200 EntityType camera,1 mesh=LoadMesh( "Tutorial Map.b3d" ) PositionEntity mesh,0,0,0 EntityFX mesh,1 EntityType mesh,2 While Not KeyHit (1) MoveEntity camera,0,-0.1,0 X=MouseXSpeed()/1000 Y=MouseYSpeed()/1000 If KeyDown(200) MoveEntity camera,0,0,0.07 If KeyDown(208) MoveEntity camera,0,0,-0.07 MoveMouse 512, 384 UpdateWorld RenderWorld Flip Wend End Die maus is in der mitte aber sie bewegt die Kamera nicht! |
||
![]() |
Thorsten |
![]() Antworten mit Zitat ![]() |
---|---|---|
Geht es so vielleicht : ![]() Code: [AUSKLAPPEN] Graphics3D 1024,768 SetBuffer BackBuffer() Collisions 1,2,2,2 camera=CreateCamera() PositionEntity camera,0,-12,0 CameraRange camera,.1,200 EntityType camera,1 mesh=LoadMesh( "Tutorial Map.b3d" ) PositionEntity mesh,0,0,0 EntityFX mesh,1 EntityType mesh,2 While Not KeyHit (1) MoveEntity camera,0,-0.1,0 X=X + MouseXSpeed() Y=Y + MouseYSpeed() If KeyDown(200) MoveEntity camera,0,0,0.07 If KeyDown(208) MoveEntity camera,0,0,-0.07 MoveMouse 512, 384 UpdateWorld RenderWorld Flip Wend End |
||
![]() |
Willi die Rübe |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. Die Variablen X und Y müssen Float sein.
2. Muss man doch dann logischerweise auch die Kamera drehen mit ql:Turnentity oder bei BlindGuy mit ql:Rotateentity 3. ql:Movemouse ql:Graphicswidth()/2, ql:Graphicsheight/2 ist flexibler. 4. Für die Gravitation würde ich ql:TranslateEntity empfehlen, ist aber nocht so wichtig. Greetz |
||
- Zuletzt bearbeitet von Willi die Rübe am Fr, Mai 12, 2006 14:43, insgesamt einmal bearbeitet
![]() |
Lunatix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab mal ein kleines beispiel ausgekramt, so mach ichs immer (so ähmlich)
Code: [AUSKLAPPEN] Graphics3D 800,600,32,2 SetBuffer BackBuffer () Global MXS#,MYS#,CamXSpeed#, CamYSpeed#, MouseSpeed#=.2, MouseInvert%=1 Global Cam,g_width%, g_height%,v_sync=1 Global SpeedX#,SpeedZ# g_width = GraphicsWidth() g_height = GraphicsHeight() Cam = CreateCamera() MoveEntity Cam,0,5,0 plane = CreatePlane() box = CreateCube() MoveEntity box,50,5,50 While Not KeyHit(1) MXS = MouseXSpeed() MYS = MouseYSpeed() CamXspeed = CamXspeed + ((MYS*MouseSpeed#)*MouseInvert) CamYSpeed = CamYSpeed - (MXS*MouseSpeed) If KeyDown(17) Speedz# = Speedz + .5 If Speedz > 2 Then Speedz = 2 Else If KeyDown(31) Speedz = Speedz - .5 If Speedz < -1.5 Then Speedz = -1.5 Else Speedz = Speedz * .92 EndIf MoveEntity Cam,SpeedX,0,SpeedZ TurnEntity Cam,CamXSpeed,CamYSpeed,0 RotateEntity Cam,EntityPitch(Cam),EntityYaw(cam),0 MoveMouse g_width/2, g_height/2 CamXSpeed = CamXspeed * .6 CamYSpeed = CamYSpeed * .6 RenderWorld Flip v_sync Wend End vlt. Hilft das ja[/code] |
||
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen... |
![]() |
Christoph |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok... ...hier meine Kommentare von oben nach unten...
@Blindguy Ich gebe dir Recht... ...mousexspeed() und mouseyspeed() geben die Pixelanzahl an, um die sich die Maus seit dem letzen Aufruf verschoben hat... ...aber... ...habe ich das nicht in meinem Beitrag erwähnt??? Noch einmal: Code: [AUSKLAPPEN] global Gmx=800,Gmy=600
graphics Gmx,Gmy,32,1 setbuffer backbuffer() while Weis_was_ich_wie_lang_ihr_die_Schleife_haben_wollt!!! cls X=mousexspeed():y=mouseyspeed() turnentity Camera,Y,X,0 Movemouse GMX/2,GMY/2 ;Male_irgendwas flip wend Noch einmal... ...hier muss es nicht das heißen, was du in deinem ersten Beitrag korrigiert hast, denn ich turne die Camera ja immer um soviel wie sich die Maus bewegt hat und nicht um die Koordinate der Maus..... ... außerdem setze ich die Maus in die Mitte, du setzst die Maus immer dort hin wo sie schon steht ![]() auch ohne Probleme weglassen...). Ich setzte den Mauszeiger immer in die Mitte nachdem ich abgefragt habe wieviel Pixel sich die Maus verschoben hat.....(Das was du gemacht hast hat zur Folge, dass man nur nach unten und rechts scrollen kann...) @sirokuhl Dein Beitrag erwähnt noch einmal dass was in meinem stand... ![]() @skey-z Vielleicht kams in meinem Beitrag nicht so ganz raus, aber genau das hab ich auch gemacht... Ausserdem darfst du den Wert bei Mousexspeed() und mouseyspeed() nicht teilen sonst kommt immer null raus. (Selbst wenn man in einem Durchlauf die Maus um 300Pixel verschiebt...300/1000 ist 0) Du kannst auch X# und y# schreiben dann geht's. Aber was bringt's? Wenn man es schafft die Maus um 300Pixel zu verschieben bewegt sich die Kamera nur um 0.3°(300/1000=3/10=0.3). D.h. du musst du Maus um 1200Pixel verschieben um eine volle Drehung zu machen(360/0.3=1200) (das stengt an ![]() Dass wäre dann eher ein Sportspiel zum Mitmachen!!! ![]() ![]() ![]() @<Willi die Rübe> 1. Ist goldrichtig!!! Siehe in diesem Beitrag weiter oben!!! 2. Ist goldrichtig!!! 3. Ist silberrichtig!!! Tut mir leid, aber hier hab ich wieder was zu meckern... Deine Alternative geht natürlich (deswegen hat sie ja auch den 2.Platz) aber... ...Der PC muss immer wieder schauen wiegroß deine Grafikfläche ist, das ist auf jedenfall langsamer!!! Außerdem unlogisch: Ich gebe dir einen Auftrag: 1. Aufgabe: Gebe mir die XGrafikfläche an!!! 2. Aufgabe: Gebe mir die YGrafikfläche an!!! 3. Aufgabe: Gebe mir die XGrafikfläche an!!! 4. Aufgabe: Gebe mir die YGrafikfläche an!!! 5. Aufgabe: Gebe mir die XGrafikfläche an!!! 6. Aufgabe: Gebe mir die YGrafikfläche an!!! Was machst du: 1. Lösung: Du schaust in einer Quelle nach, wie groß X denn ist. 2. Lösung: Du schaust in einer Quelle nach, wie groß Y denn ist. 3. Lösung: Du weißst schon was X ist und kuckst gar nicht erst nach. 4. Lösung: Du weißst schon was Y ist und kuckst gar nicht erst nach. 5. Lösung: Du weißst schon was X ist und kuckst gar nicht erst nach. 6. Lösung: Du weißst schon was Y ist und kuckst gar nicht erst nach. Auf deine Weise ist der PC gezwungen, immer wieder nachzusehen, obwohl sich eh nichts ändert!!! Auf meine Weise weiß der PC von anfang an, was X und Y ist. 4. Ist wieder goldrichtig!!! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group