2016-04-14 32 views
0

我一直在關注這個link的教程,用於在LIBGDX中實現觸摸板。我想爲使用觸摸板的身體設置線速度。我試着按照本教程更新位置,但是身體並沒有移動更平滑。在LIBGDX中使用觸摸板設置線性速度

這是我建立的線性速度編碼,

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

當我實現這個邏輯,身體開始移動,雖然我沒有通過觸摸板提供任何投入。 當旋鈕左右旋轉時,我想要按照上面的代碼設置線速度,但是,我不知道如何檢查旋鈕是向右還是向左旋轉。請幫忙。提前致謝。

回答

2

你不處理這種情況時,觸摸板是在它的零位 - 我的意思是你有停止體內有沒有代碼。看看這個片段:

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

即使你不移動觸摸板身體有一些速度設置。

最好的辦法是設置速度直接基於觸摸板位置,而不象任何條件:

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

它將處理觸摸墊的零位置(和體將具有(0,0)的速度它的速度將基於觸摸板的位置值(也就是說,如果您移動觸摸板,一個小小的身體會慢慢移動,如果您將觸摸板移動到邊緣,它將以最快的速度移動 - 也像它應該我猜)。

SPEED變量應該是您需要的最大速度。在這種情況下,您可以設置SPEED = 1.4f爲例。

+0

非常感謝!它的工作@ m.antkowicz,你可以告訴是否使用這個「觸摸板」對重力有影響?由於身體緩慢下落,需要更多時間才能到達地面。這個問題並沒有出現,當我沒有使用「觸摸板」 – Anusha

+0

是的 - 如果有其他力量正在修改身體的位置/速度,你應該通過使用當前身體的速度以某種方式處理它們。恐怕簡單的'gamehero.heroBody.getLinearVelocity()。x + SPEED * touchpad.getKnobPercentX()'不會產生令人滿意的效果 - 你必須嘗試使用​​由於遊戲特性造成的當前物體的速度 –

+0

給我一個如何改變重力的想法?我真的不知道,這個觸摸板有更少的教程!幫助將是偉大的@ m.antkowicz – Anusha