Cursor springt

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

NightPhoenix

Betreff: Cursor springt

BeitragFr, Dez 07, 2007 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Problem:
Der Cursor springt bei jedem Mausklick in den untreren Bildschirmrand

Ich weiß selbst nicht wieso das so ist, aber wenn ich die Variable "mmy" negativ setze springt der Cursor. Ist "mmy" positiv bleibt alles normal! Aber um die richtigen Koordinaten zu berechnen ist das negativieren von "mmy" nötig. Bis auf "MoveEntity Cursor" wird der Cursor aber nie bewegt, auch nicht wenn man die Maustaste drückt.
Hängt das vielleicht mit dem "MoveMouse" in der Abfrage für den Mausklick zusammen?
Der Cursor ist ein Sprite vor der Kamera, kein 2D Image, dennoch brauche ich einen "CameraPick" über die 2D Mauskoordinaten, also hab ich einfach die Maus via "MoveMouse" an die Position des Sprites geschickt wenn man die Maustaste Links drückt.

Code: [AUSKLAPPEN]
   ;MAUS   
      moux#=MouseYSpeed()
      mouy#=MouseXSpeed()


   MoveMouse 200,300
   
   
   MoveEntity cursor,mouy#/200,-moux#/200,0
   

   
      CurPosX#=EntityX(cursor)
         If CurPosX#>2 Then PositionEntity cursor,2,EntityY(cursor),-3
         If CurPosX#<-2 Then PositionEntity cursor,-2,EntityY(cursor),-3
      CurPosY#=EntityY(cursor)
         If CurPosY#>1.6 Then PositionEntity cursor,EntityX(cursor),1.6,-3
         If CurPosY#<-1.6 Then PositionEntity cursor,EntityX(cursor),-1.6,-3
      




;......


                              If MouseHit(1)
                                 mmx=Int(((2+CurPosX#)/4)*grph_w)
                                 mmy=Int(((1.6+CurPosY#)/3.2)*(grph_h))
                                 MoveMouse mmx,-mmy
                                 pick=CameraPick(Kamera,MouseX(),MouseY())
                                 If pick=0 Then pick=KeineAuswahl
                              For obct.Tplanet = Each Tplanet
                                 If pick = obct\Mesh Or pick = obct\NavMesh Then
                                    pick=0
                                    Goto OUTPICK
                                 EndIf
                              Next
                              EndIf

                           .OUTPICK


Ich weiß langsam echt nicht mehr wieso das so sein könnte. Bin mit meiner Fehleranalyse am Ende. Habt ihr eine Idee?

MfG.

Xeres

Moderator

BeitragFr, Dez 07, 2007 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Mousehit in einer Variable am Anfang der Mainschleife speichern und die in Bedingungen einsetzten
2. mmx und mmy SIND die Mauskoordinaten... warum die Maus dahin verschieben und mit MouseX/Y abfragen? Kannst gleich die Werte einsetzten.
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)

NightPhoenix

BeitragFr, Dez 07, 2007 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die schnelle Antwort Xeres! ^^



Nun der Cursor springt nicht mehr.
Funzte aber trotzdem noch nicht... Wieso hab ich jetzt auch heraus gefunden ^^ Dummer Denkfehler... Wenn "mmy" negativ ist fragt er Koordinaten von 0 bis -1024 ab, ich brauche aber 0 bis 1024, aber eben spiegelverkert, deshalb hier der richtige Code ^^
Einfach die positive mmy Koordinate von der fensterhöhe abrechnen und schon hat mans gespiegelt. Nur dumm dass ich extra dafür ein Thread aufmachen musste Wink

neuer Code:

Code: [AUSKLAPPEN]



                              If MouseHit(1)
                                 mmx=Int(((2+CurPosX#)/4)*grph_w)
                                 mmy=Int((grph_h)-(((1.6+CurPosY#)/3.2)*(grph_h)))
                                 ;MoveMouse mmx,mmy
                                 pick=CameraPick(Kamera,mmx,mmy)
                                 If pick=0 Then pick=KeineAuswahl
                              For obct.Tplanet = Each Tplanet
                                 If pick = obct\Mesh Or pick = obct\NavMesh Then
                                    pick=0
                                    Goto OUTPICK
                                 EndIf
                              Next
                              EndIf

                           .OUTPICK
                           
   
   ;MAUS   
      moux#=MouseYSpeed()
      mouy#=MouseXSpeed()


   MoveMouse 200,300
   
   
   MoveEntity cursor,mouy#/200,-moux#/200,0
   

   
      CurPosX#=EntityX(cursor)
         If CurPosX#>2 Then PositionEntity cursor,2,EntityY(cursor),-3
         If CurPosX#<-2 Then PositionEntity cursor,-2,EntityY(cursor),-3
      CurPosY#=EntityY(cursor)
         If CurPosY#>1.6 Then PositionEntity cursor,EntityX(cursor),1.6,-3
         If CurPosY#<-1.6 Then PositionEntity cursor,EntityX(cursor),-1.6,-3



Abfrage der Koordinaten und das Picken funktioniert jetzt perfekt! Danke für die Hilfe Xeres Wink

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group