Hi!
Sagt mal, hat sich Mouseaxis geändert?
Wenn ich jetzt mit dem Mauszeiger aus dem Fenster komme bewegt ich mich nicht mehr...
Das war doch früher auch nicht so :(
SYSTEMPOINTER TRUE
GLOBAL phi_xy%, phi_xz%, x#, y#, z#=100
WHILE TRUE
X_MAKE3D 1,1000,45
X_CAMERA x,y,z, x+SIN(phi_xz),y+COS(-phi_xy),z+COS(phi_xz)
INC phi_xy, MOUSEAXIS(1)
DEC phi_xz, MOUSEAXIS(0)
IF phi_xz > 359 THEN phi_xz = 0
IF phi_xz < 0 THEN phi_xz = 359
IF phi_xy < 0 THEN phi_xy = 0
IF phi_xy > 179 THEN phi_xy = 179
FOR i = 0 TO 10
X_DRAWAXES 0,0,i*100
NEXT
X_MAKE2D
PRINT "Phi_XY: "+phi_xy+" | Phi_xz : "+phi_xz, 10,10
SHOWSCREEN
WEND
END
Wie soll man da ein 3D-Movement machen... ?
Mouseaxis sollte immer im Fenstermittelpunkt "gepinnt" sein und dann die geschwindigkeit abfragen !
Versuch's mal mit...
LOCAL center_x, center_y
GETSCREENSIZE center_x, center_y
center_x = sx / 2
center_y = sy / 2
//...
SETMOUSE center_x, center_y
Es gibt ein SETMOUSE? ... xD
OK dann gehts natürlich wieder, aber dennoch hat sich MOUSEAXIS geändert...
Jap, das habe ich auch schon gemerkt...
Und SETMOUSE habe ich auch nur durch Zufall gefunden, weil ich geguckt habe, obs gehilighted wird. xD
In der Hilfe kann ich davon nichts finden. :(
Doch ist in der Hilfe drin... habs aber noch nie bemerkt :D
Danke für den Tip ;)
an was arbeitest du grade?
Okay,
dann sollte ich nochmal Hilfe lesen lernen... :good:
Vielleicht fehlt's auch nur in der Online-Hilfe, weil ich die eben genutzt hab.^^
Zurzeit überlege ich, was ich cooles programmieren könnte (bis auf meine Projekte bei der Arbeit :P ).
Und Du?
Können ja sonst per PM schreiben... Oder Skype, wenn du hast. Schick mir dann per PM deinen Nick, dann kann ich dich adden. ;)
Hab kein Skype installiert :D
Ich sammel grade dafür : http://www.glbasic.com/forum/index.php?topic=7950.0
will unbedingt ein 3D-Projekt pushen für GLB :D
Jo, ich mach eigl. auch nur noch 3D in GLBasic... :D Aber halt noch nichts "richtiges" bis jetzt gemacht...
Ja, hab deinen Thread schon gesehen. :)
Dann teste doch mit mir mit :D
Mal sehen,
erstmal LD48 am WE! :D Hoffe, ich krieg da was gerissen. :P
Nimm doch auch teil.
ne net wirklich :)
Ich habe den Beitrag heute Mittag schon gesehen .
Das erste Beispiel was ich gerade im Samples Ordner finde und starte
ist 3d Maze wo man sich nicht mehr umgucken kann :-)
EDIT:
Ich beömmel mich grad über Croco Game <3
(das geht leider auch nicht mit dem drehen :'()
Wie schon richtig gesagt wurde, schreib einfach ein SETMOUSE an Beginn oder Ende der Mainloop (bspw. vor das SHOWSCREEN) und schon geht wieder alles.
SETMOUSE in einer Schleife könnte Probleme mit sich bringen z.B. wenn man den Hardware Cursor auch sehen will oder die Mausgeschwindigkeit wird falsch berechnet.
Mein Tipp wäre den nur wieder in die Mitte zu setzen wenn der weiter als xxx Pixel von der Mitte entfernt ist
oder wenn der am Rand kommt auf die andere Seite zu setzen.
Ich würde SETMOUSE nur gemeinsam mit SYSTEMPOINTER FALSE verwenden.
Wenn man einen Mauszeiger sehen will, würde ich auch immer SYSTEMPOINTER TRUE verwenden und keinen eigenen zeichnen (bring zum Beispiel Probleme mit Tablets). Wenn man einen Mauszeiger braucht, dann verwendet man ohnehin sehr selten die Mausgeschwindigkeit (und am besten nie SETMOUSE in der Loop), oder hat zumindest kein Problem damit, dass außerhalb des Fensters nichts mehr angezeigt wird, schließlich will man ja nicht, dass der Spieler die Maus aus dem Fenster bewegen muss, um bestimmte Aktionen auszuführen. Es sollte also sehr selten zu Problemen kommen, lässt man den Mauszeiger anzeigen.
Sollte also fast immer ohne Probleme lösbar sein. ;)
Schön wäre wenn die Mausgeschwindigkeit unabhängig der Pos. ist.
In der Maus ist ja nur ein Taktzähler und mit diesem wird die Pos. verändert.
Ob es die Windows API zu läßt weiß ich aber nicht.
Man könnte zum Beispiel bei einer eigenen Scrollbar den Mauszeiger an der geklickten Pos.
stehen lassen/fest halten und trotzdem mit hoch runter den Balken schubsen.
Gerade getestet und festgestellt: MOUSEAXIS funktioniert bei mir, auch außerhalb des Fensters, jedoch nur mit SYSTEMPOINTER TRUE. Aber egal, ob mit oder ohne Systempointer, es ist manchmal etwas hackelig (vorallem wenn sich kein MOUSESTATE in der Loop befindet), aber das könnte auch am Programm liegen.
Mein Workaround , nicht schön aber selten :x
// --------------------------------- //
// Project: MausTest
// MR 18.04.2012
// IDE Version: 10.283
//SETSCREEN 1920,1080,1
SYSTEMPOINTER FALSE //mit TRUE geht nicht
ALLOWESCAPE TRUE
AUTOPAUSE TRUE
LOCAL mx,my,b1,b2
LOCAL vx,vy
REPEAT
//0=X - Geschwindigkeit
//1=Y - Geschwindigkeit
//2=Rad (1 auf, -1 ab)
//3=linke Maustaste
//4=rechte Maustaste
//5=mittlere Maustaste
vx=MOUSEAXIS(0)
vy=MOUSEAXIS(1)
MOUSESTATE mx,my,b1,b2 //löscht wohl auch MouseAxis darum ist das drüber
FreeMouse(mx,my)
SETPIXEL mx,my,RGB(255,255,255)
PRINT "X="+mx+" Y="+my,0,0
PRINT "VX="+vx+" VY="+vy,0,20
//PRINT "ViewW="+vieww,0,40
SHOWSCREEN
UNTIL FALSE
END
FUNCTION FreeMouse: mx,my
LOCAL viewx , viewy , vieww , viewh
GETVIEWPORT viewx, viewy, vieww, viewh
//Auf die andere Seite setzen
IF mx<8
mx=mx+vieww-8;SETMOUSE mx,my
ELSEIF mx>vieww-8
mx=mx-vieww+8;SETMOUSE mx,my
ELSEIF my<8
my=my+viewh-8;SETMOUSE mx,my
ELSEIF my>viewh-8
my=my-viewh+8;SETMOUSE mx,my
ENDIF
ENDFUNCTION
Quote from: kanonet on 2012-Apr-18
Gerade getestet und festgestellt: MOUSEAXIS funktioniert bei mir, auch außerhalb des Fensters, jedoch nur mit SYSTEMPOINTER TRUE. Aber egal, ob mit oder ohne Systempointer, es ist manchmal etwas hackelig (vorallem wenn sich kein MOUSESTATE in der Loop befindet), aber das könnte auch am Programm liegen.
Wenn in Y-Richtung über oder unter dem Fenster geht Y-Richtung nimmer das gleiche in in X links und rechts ;)
War früher nicht der Fall!
Hmm stimmt. Da es nur so selektiv auftritt, würde ich vermuten, dass es ein Bug ist und kein Feature.