2016-04-14 4 views
0

Ich habe Tutorial aus diesem für die Implementierung von Touchpad in LIBGDX folgen. Ich möchte die lineare Geschwindigkeit für einen Körper mit Touchpad einstellen. Ich habe versucht, die Position gemäß diesem Tutorial zu aktualisieren, aber der Körper bewegt sich nicht glatter.Einstellen der linearen Geschwindigkeit für einen Körper mit TouchPad in LIBGDX

Dies ist mein Code lineare Geschwindigkeit zum Einrichten,

public void knobinput(float dt) 
{ 
if(touchpad.getKnobPercentX()>0) 
{ 
    gamehero.heroBody.setLinearVelocity(1.4f, 0); 
} 
else 
{ 
    gamehero.heroBody.setLinearVelocity(-1.4f, 0); 
} 
} 

Wenn ich diese Logik implementieren, begann der Körper in Bewegung, obwohl ich keine Eingaben über Touchpad geben hat. Ich möchte die lineare Geschwindigkeit nach obigem Code einstellen, wenn der Knopf nach rechts und links gedreht wird, aber ich wusste nicht, wie man überprüft, ob der Knopf nach rechts oder links gedreht ist. Bitte helfen Sie. Danke im Voraus.

Antwort

2

Sie die Situation nicht umgehen, wenn das Touchpad ist in seiner Nullstellung - Ich meine, Sie keinen Code haben für Körper dort zu stoppen. Werfen Sie einen Blick auf dieses Fragment:

else 
    { 
     gamehero.heroBody.setLinearVelocity(-1.4f, 0); 
    } 

Auch wenn Sie etwas Geschwindigkeit Satz nicht das Touchpad Körper bewegen hat.

Der beste Ansatz Geschwindigkeit einzustellen direkt wie ohne Bedingungen auf Touchpad Position basierend wäre:

gamehero.heroBody.setLinearVelocity(SPEED * touchpad.getKnobPercentX(), 
             SPEED * touchpad.getKnobPercentY()); 

Es Nullposition des Touchpads behandelt (und Körper 0 hat (, 0) Geschwindigkeit so wie es sollte) und seine Geschwindigkeit basiert auch auf dem Positionswert des Touchpads (was bedeutet, dass sich ein kleiner Körper beim Bewegen eines Touchpads langsam bewegt und wenn man das Touchpad an den Rand bewegt, bewegt es sich mit maximaler Geschwindigkeit - auch als es sollte ich schätzen).

SPEED Variable sollte die maximale Geschwindigkeit sein, die Sie benötigen. In diesem Fall können Sie z. B. einstellen.

+0

Vielen Dank. !! Es funktionierte @ m.antkowicz und könntest du bitte sagen, ob die Verwendung dieses "Touchpads" einen Einfluss auf die Schwerkraft hat? Weil der Körper langsam fällt und es länger dauert, bis er den Boden erreicht. Dieses Problem trat nicht auf, als ich "Touchpad" nicht verwendete – Anusha

+0

Yup - wenn es andere Kräfte gibt, die die Position/Geschwindigkeit des Körpers ändern, sollten Sie sie behandeln, indem Sie die Geschwindigkeit des aktuellen Körpers irgendwie verwenden. Ich fürchte, das einfache 'gamehero.heroBody.getLinearVelocity(). X + SPEED * touchpad.getKnobPercentX()' wird keinen befriedigenden Effekt erzeugen - Sie müssen versuchen, die Geschwindigkeit des aktuellen Körpers aufgrund der Charakteristik Ihres Spiels zu verwenden –

+0

Könnten Sie gib mir eine Idee, wie man die Schwerkraft entsprechend ändert? Ich habe wirklich keine Ahnung und es gibt weniger Tutorials für dieses Touchpad !! Hilfe wäre großartig @ m.antkowicz – Anusha

Verwandte Themen