JoyX(), JoyY() und andere grausigkeiten beim Gamepad

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

The_Nici

Betreff: JoyX(), JoyY() und andere grausigkeiten beim Gamepad

BeitragSa, Mai 24, 2008 12:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Jungs,
nun, folgendes Problem:
Mein Gamepad gibt bei JoyX() und JoyY() wenn ich es nicht berühre -1.52588e-005 zurück, und nicht 0. Was daran nicht gut ist?
Nun, mein Player dreht sich immer wieder auf diese Position wenn ich das Gamepad berühr. Das ist nicht so toll. :/

Weiss jemand wie ich das verhindern kann?

MfG

BigMaexle

BeitragSa, Mai 24, 2008 12:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei vielen Spielen gibt es eine "Todeszone"

Also ein Bereich, in dem die Bewegung des Joysticks nicht beachtet wird.

Ignoriere doch den Bereich von -0.1 bis 0.1

Ich glaube nämlich es liegt am Joystick, nicht an BB
--------------------------------------
Ich bin unfreiwillig ein Mitglied dieser kapitalistischen Gesellschaft, wo jeder Geldgeile Unternehmer an mein Geld will und ich selbst bei meinen Entscheidungen so gut wie willenlos bin...... und ich bin glücklich drüber
 

Tritium

BeitragSa, Mai 24, 2008 12:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Sonst könnte der Joystick auch falsch kalibriert sein, wenn Du ihn schon lange nicht mehr benutzt hast.

The_Nici

BeitragSa, Mai 24, 2008 12:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke vielmals, jedoch bleibt er jetzt alle 10° ein bisschen stecken, und stehen bleibt er auch nicht immer, sondern rutscht auf die nächsten 90°.
Trotzdem danke vielmals. Smile

MfG
 

JKinG

BeitragDi, Mai 27, 2008 13:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Im folgenden Beispiel den Wert von "deadzone" soweit erhöhen bis dein Joystick sich nicht mehr von alleine bewegt.

Code: [AUSKLAPPEN]

SuperStrict

SetGraphicsDriver D3D7Max2DDriver()
AppTitle ="Analog Joystick Demo"
Graphics 640 , 480 , 0 , 60

Global joymenge:Int     = JoyCount()
Global gameport:Int     = 0
Global gamefps:TTimer   = CreateTimer(60)
Global deadzone:Double  = 0.07
Global movespeed:Double = 6.7

Global x:Double, y:Double


While Not KeyHit(key_escape) And Not AppTerminate()
Cls

If JoyX(gameport) >  deadzone Then x=(x+JoyX(gameport)*movespeed)
If JoyX(gameport) < -deadzone Then x=(x-Abs(JoyX(gameport)*movespeed))

If JoyY(gameport) >  deadzone Then y=(y+JoyY(gameport)*movespeed)
If JoyY(gameport) < -deadzone Then y=(y-Abs(JoyY(gameport)*movespeed))

SetColor 200,0,0; DrawRect x, y, 32, 32

WaitTimer(gamefps)
Flip -1
Wend
Cls
EndGraphics()
End


Mit einem kleinen Toool kannst du alle vorhandenen Joystick Kalibrationen in deinem Betriebssystem löschen, kann hilfreich sein, mal wieder alles auf 0 zu bringen.

http://www.bildungsfront.de/public/ClrCalib.zip

Ihh, nun erst gesehen das es hier nicht um BlitzMax geht.
Bitte lösch mich!

Silver_Knee

BeitragDi, Mai 27, 2008 16:20
Antworten mit Zitat
Benutzer-Profile anzeigen
newcode=Convert (JKinG,"BMax","BB") Wink
Code: [AUSKLAPPEN]
AppTitle ="Analog Joystick Demo"
Graphics 640 , 480 , 0 , 2

joymenge     = JoyCount()
gamefps   = CreateTimer(60)
deadzone#  = 0.07
movespeed#= 6.7

While Not KeyHit(1)
Cls

If JoyX(gameport) >  deadzone Then x=(x+JoyX(gameport)*movespeed)
If JoyX(gameport) < -deadzone Then x=(x-Abs(JoyX(gameport)*movespeed))

If JoyY(gameport) >  deadzone Then y=(y+JoyY(gameport)*movespeed)
If JoyY(gameport) < -deadzone Then y=(y-Abs(JoyY(gameport)*movespeed))

Color 200,0,0
Rect x, y, 32, 32

WaitTimer(gamefps)
Flip 0
Wend
Cls
End

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group