Maus in der Mitte vom Bildschirm behalten?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

T-25

Betreff: Maus in der Mitte vom Bildschirm behalten?

BeitragSa, Jul 18, 2009 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leute!

Ich würde gerne die Maus in der Mitte vom Bildschirm behalten, da ich die Kamera sobald die Maus am Bildschirmrand ist nichtmehr bewegen kann.

Hier mal der Code:
Code: [AUSKLAPPEN]
winkel=winkel-MouseXSpeed()/3
   winkel2=winkel2+MouseYSpeed()/3
   X# = XXX * Cos( winkel ) * Cos( winkel2 )
   Y# = XXX * Sin( winkel2 )
   Z# = XXX * Sin( winkel ) * Cos( winkel2 )
   PositionEntity playcam,EntityX(player)+x,EntityY(player)+y,EntityZ(player)+z
   RotateEntity player,EntityPitch(player),winkel,EntityRoll(player)
   RotateEntity playcam, winkel2 - 90, winkel, EntityRoll(player)
   UpdateWorld
   RenderWorld
   
   DrawImage crosshair, screenwidth / 2 - 34, screenheight / 2 - 34

Chrise

Betreff: Re: Maus in der Mitte vom Bildschirm behalten?

BeitragSa, Jul 18, 2009 19:29
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
Llama 1 Llama 2 Llama 3
Vielen Dank an Pummelie, der mir auf seinem Server einen Platz für LlamaNet bietet.
 

Mathe

BeitragSa, Jul 18, 2009 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab das jetzt so verstanden, dass du nicht über einen bestimmten Bereich hinaus willst ich würde es z.B so lösen.

Code: [AUSKLAPPEN]
Graphics 800,600,32,2
SetBuffer BackBuffer()
Local Win_W% = 800, Win_H% = 600

Repeat
   Cls
   Rect 300,200,200,200,0
   If MouseX() >= 500 Or MouseX() <= 300 Or MouseY() >= 400 Or MouseY() <= 200 Then
      MoveMouse Win_W/2, Win_H/2
   EndIf
   Flip
Until KeyHit(1)


Wenn MouseX() oder MouseY() über das Rechteck hinausgeht wird die Maus wieder in die Mitte gesetzt.

Edit:
sry hab überlesen dass du die Maus in der Mitte halten willst...
Windoof nein DANKE => ArchLinux Wink

The_Nici

Betreff: Re: Maus in der Mitte vom Bildschirm behalten?

BeitragSa, Jul 18, 2009 22:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Chrise hat Folgendes geschrieben:

Unschön!
GraphicsWidth bzw. GraphicsHeight wird jeden Schleifendurchlauf neu aufgerufen - auch wenn die Grafikauflösung bleibt!
Folgen -> Unnötiger Zugriff verursacht Geschwindigkeitsverlust.
Bessere Lösung -> Als Variablen definieren.

BlitzBasic: [AUSKLAPPEN]
Global gfx% = GraphicsWidth()
Global gfh% = GraphicsHeight()

While Not KeyHit(1)
MoveMouse gfx/2,gfh/2
Wend
End


Noch schneller wäre natürlich die halbe Auflösung gleich als Variable zu definieren, aber dabei handeln es sich um etwa 0.001 Millisekunden pro Schleifendurchlauf, also unbedeutend. Ausserdem würde das 8 bytes mehr Speicherverbrauch verursachen.

MfG

Mr.Keks

BeitragSa, Jul 18, 2009 23:40
Antworten mit Zitat
Benutzer-Profile anzeigen
optimiere lieber schleifen / rekursive funktionen, die pro frame tausende male aufgerufen werden, anstatt dir über sowas nen kopp zu machen.... (;
MrKeks.net
 

T-25

BeitragSo, Jul 19, 2009 11:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Gut, funktioniert jetzt
Smile
Danke

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group