RotateEntity mit Rechtklick

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Darie
Beiträge: 204
Registriert: 14.09.2004 21:51

RotateEntity mit Rechtklick

Beitrag von Darie »

Hab da ein Problem mit der Rotation eines Würfels. Hab schon im Forum gesucht, bin mir aber dennoch nicht im Klaren warum das nicht richtig funktioniert:

Code: Alles auswählen


IncludeFile "Screen3DRequester.pb"

InitEngine3D()
InitSprite()
InitKeyboard()
InitMouse()
Screen3DRequester()
Add3DArchive("\", #PB_3DArchive_FileSystem)

CreateCamera(0, 0, 0, 100,100)
CameraLocate(0,0,0,20)

LoadMesh(0, "cube1.mesh")    
CreateMaterial(0, LoadTexture(0, "cube1.jpg"))
;CreateLight(1, RGB(255,0,0), -100.0, 0, 0)
CreateEntity(0, MeshID(0),  MaterialID(0))
;ScaleEntity(0, 0.5, 0.5, 0.5)
;EntityRenderMode(0,#PB_Entity_Plot );#PB_Entity_Wireframe)

;CameraRenderMode(0,  #PB_Camera_Wireframe)
CameraLookAt(0, EntityX(0), EntityY(0), EntityZ(0))

Repeat
      Screen3DEvents()
      
      ClearScreen(RGB(0, 0, 0))
            
      If ExamineKeyboard()
      
      
      If KeyboardPushed(#PB_Key_F1)
        CameraLocate(0, 0, 0, 20)
        CameraLookAt(0, EntityX(0), EntityY(0), EntityZ(0))
      Endif
        
        If KeyboardPushed(#PB_Key_Left)
          KeyX = -1
        ElseIf KeyboardPushed(#PB_Key_Right)
          KeyX = 1
        Else
          KeyX = 0
        EndIf
        
        If KeyboardPushed(#PB_Key_Up)
          KeyY = -1
        ElseIf KeyboardPushed(#PB_Key_Down)
          KeyY = 1
        Else
          KeyY = 0
        EndIf
        
        If KeyboardPushed(#PB_Key_PageUp)
          RollZ = 1
        EndIf
        
        If KeyboardPushed(#PB_Key_PageDown)
          RollZ = -1
        EndIf
       
      
      EndIf
      
      If ExamineMouse()
       
       RotX = 0 : RotY = 0
       MouseX = -MouseDeltaX()/5
       MouseY = -MouseDeltaY()/5   
       
       If MouseButton(#PB_MouseButton_Right)
        RotX = MouseX 
        RotY = MouseY
        MouseX = 0 
        MouseY = 0
       Endif
         
     EndIf
      
      RotateEntity(0,RotX, RotY, RollZ,#PB_Relative) 
      RotateCamera(0, MouseY, MouseX, 0, #PB_Relative)
      MoveCamera  (0, KeyX, 0, KeyY)
      
      RenderWorld()
     FlipBuffers()
    
       
    Until KeyboardPushed(#PB_Key_Escape)
    
 
Wenn man die rechte Maustaste gedrückt hält, soll die Cam nicht rotiert werden, sondern der Würfel gedreht werden. Funktioniert auch, nur das plötzlich bei starker Mausbewegung die Cam wieder rotiert, obwohl die Maustaste gedrückt ist.

Vielen Dank für Hilfe !!! Bin wahrscheinlich zu deppig um das richtig zu proggen....
Repeat
PureBasic
ForEver
Benutzeravatar
captain_hesse
Beiträge: 138
Registriert: 17.05.2009 18:55
Computerausstattung: Windows 7 Ultimate 64 Bit / AMD Phenom II 1090T, 6x3200 MHz / AMD HD-6850 / PureBasic 5.1 (x86) (x64)
Wohnort: Saarland

Beitrag von captain_hesse »

Hi

Habs grad mal getestet, bei mir läuft es richtig. Wenn ich die rechte Maustaste gedückt halte dann dreht sich nur der Würfel egal wie heftig ich die Maus bewege. Vieleicht liegts ja an deiner Maus, versuchs mal mit einer anderen.

MfG.
Captain_hesse
Benutzeravatar
Darie
Beiträge: 204
Registriert: 14.09.2004 21:51

Beitrag von Darie »

Merkwürdig dass es bei dir geht !!!! Kanns mir nicht vorstellen, dass es wirklich an meiner Mouse liegt. Bewege die Maus bitte mal beim Rechtsklick eher schräg, also eine Rotation in beide Richtungen. Bei mir flutscht dann nämlich die CAM plötzlich weg....sowas blödes.....
Repeat
PureBasic
ForEver
Benutzeravatar
captain_hesse
Beiträge: 138
Registriert: 17.05.2009 18:55
Computerausstattung: Windows 7 Ultimate 64 Bit / AMD Phenom II 1090T, 6x3200 MHz / AMD HD-6850 / PureBasic 5.1 (x86) (x64)
Wohnort: Saarland

Beitrag von captain_hesse »

Jo habs nochmal probiert, funktioniert ausgezeichnet. Was mir allerdings aufgefallen ist, du solltest mal darauf achten das die Maus absolut zum stillstand gekommen ist ehe du den Knopf los lässt, weil wenn ich die Maus anhalte und dann sofort den knopf gehen lasse passiert es bei mir auch. Oder es ist wie schon gesagt etwas mit deiner Maus vieleicht funktioniert der rechte Mausknopf nicht mehr richtig.

MfG.
Captain_hesse
Benutzeravatar
Darie
Beiträge: 204
Registriert: 14.09.2004 21:51

Beitrag von Darie »

Sehr merkwürdig, weiss nicht woran es liegt. Bei mir flutscht die CAM weg, obwohl die Maustaste gedrückt ist. Aber vielen Dank für dein Ausprobieren!!!

Grüsse
ALDI
Repeat
PureBasic
ForEver
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

>>> weiss nicht woran es liegt

>> Vieleicht liegts ja an deiner Maus, versuchs mal mit einer anderen.

> Kanns mir nicht vorstellen, dass es wirklich an meiner Mouse liegt.

Bild
Benutzeravatar
Darie
Beiträge: 204
Registriert: 14.09.2004 21:51

Beitrag von Darie »

Ja, hab gerade keine andere Maus da....aber meine Maus funktioniert eigentlich auch ganz normal....
Was mir aufgefallen ist, dass ExamineMouse (deshalb schonmal den If-Block entfernen, damit MouseButton überhaupt abgefragt wird) und MouseButton manchmal als Rückgabewert doch eine 0 zurückgibt (obwohl die Taste gedrückt ist). Ich vermute es hat irgendwie etwas mit den MouseDelta-Werten zutun. Wenn die Werte zu gross werden geht auch der Rückgabewert von Mousebutton auf 0 zurück. Werde es mal mit MouseX und Y probieren....
Repeat
PureBasic
ForEver
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

also, ich hab noch nie den Rückgabewert von ExamineMouse mit einbezogen...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Darie
Beiträge: 204
Registriert: 14.09.2004 21:51

Beitrag von Darie »

Ich auch nicht, aber wenn ein If-Block davon abhängt, macht das schon was aus....aber leider gibt ja MouseButton plötzlich auch ne null zurück. Vielleicht liegts doch an meiner Maus....
Versuche gerade das ganze mit MouseX und MouseY zu machen, aber irgendwie klappt das auch nicht (mit old-variablen, leider dreht sich der würfel dann von alleine, mist.....)



mh, also mit mausx und so ist das ergebnis das gleiche....:

mausbutton() gibt plötzlich eine null zurück, obwohl die Taste gedrückt wird.
Repeat
PureBasic
ForEver
Benutzeravatar
Darie
Beiträge: 204
Registriert: 14.09.2004 21:51

Beitrag von Darie »

Also an meiner Maus liegts wohl nicht, hab einfach mal ne andere Maustaste ausprobiert. Aber ich wüsste trotzdem gerne, warum die Funktion Mausbutton trotz gedrückter Taste eine #Null zurückgibt.
Genauso ist es mit dem Rückgabewert von ExamineMouse().
Der gibt meistens ne eins zurück aber manchmal halt auch ne null.....

Jaa, das sind die Abgründe von DirextX
:? :? :freak: :freak: :freak: weird things are going on....
Repeat
PureBasic
ForEver
Antworten