0

LIBGDX でタッチパッドを実装するために、このリンクのチュートリアルに従っています。タッチパッドを使ってボディの線速度を設定したい。このチュートリアルに従って位置を更新しようとしましたが、体がスムーズに動きません。

これは、線速度を設定するための私のコードです。

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

このロジックを実装すると、タッチパッドで何も入力していないのに体が動き始めました。ノブを左右に回したときの線速度を上記のコード通りに設定したいのですが、ノブが左右どちらに回されているかを確認する方法がわかりませんでした。助けてください。前もって感謝します。

4

1 に答える 1

2

タッチパッドがゼロの位置にある場合、状況を処理しません。つまり、そこで体を停止するためのコードがありません。このフラグメントを見てください:

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

タッチパッド本体を動かさなくても、一定のベロシティが設定されています。

最良のアプローチは、次のような条件なしで、タッチパッドの位置に基づいて速度を直接設定することです。

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

タッチパッドのゼロ位置を処理し(ボディには(0、0)速度が設定されます)、速度はタッチパッドの位置の値にも基づいています(タッチパッドを動かすとボディが少し動くことを意味します)ゆっくりとタッチパッドを端に移動すると、最大速度で移動します-これも私が推測する必要があります)。

SPEED変数は、必要な最大速度にする必要があります。この場合SPEED = 1.4f、たとえば設定できます。

于 2016-04-14T13:53:52.167 に答える