0

さて、私はOpenGL ESで何かに取り組んでおり、デバイスの向きで何かを動かしたいのですが、今は半分うまく機能しています...つまり、動きは機能しますが、何らかの理由で私が与えた境界からまだ抜け出します。これは私のコードです:

        float pos = Triangle.getPosX();
        float pos2 = Triangle.getPosY();
        float pos3 = Triangle.getPosZ();


        float pos4 = Triangle.getPosX2();
        float pos5 = Triangle.getPosY2();
        float pos6 = Triangle.getPosZ2();
         switch (event.sensor.getType())
         {
            case Sensor.TYPE_ACCELEROMETER:

                if(event.values[0] > 1)
                {
                    if(pos < 0)
                    {
                        Triangle.setPosX(pos - 0.1f);
                        Triangle.setPosY(pos2 - 0.1f);
                        Triangle.setPosZ(pos3 - 0.1f);
                    }
                }
                System.out.println(" , " +event.values[0] + pos);
                if(event.values[0] < -1)
                {
                    if(pos > -3)
                    {
                        Triangle.setPosX(pos + 0.1f );
                        Triangle.setPosY(pos2 + 0.1f);
                        Triangle.setPosZ(pos3 + 0.1f);
                    }
                }
            break;

なぜ画面の外に出ることができるのかわかりません。誰?

4

1 に答える 1

0

平易な英語のコードはこれを行います:

If posx is less than 0
    Decrease posx. Without bounds.

If posx is greater than -3 
    Increase it. Without bounds.

おそらくより良いことはこれです:

If posx is less than 0
    Increase posx.

If posx is greater than -3 
    Decrease posx.

たとえば、このような Java コードを使用します。意味をより明確にするために、いくつかの変数の名前を変更しました。

float posx = Triangle.getPosX();
float posy = Triangle.getPosY();
float posz = Triangle.getPosZ();

switch (event.sensor.getType())
{
    case Sensor.TYPE_ACCELEROMETER:

    float accelx = event.values[0];
    if(accelx > 1 && posx < 0)
    {
        Triangle.setPosX(posx + 0.1f);
        Triangle.setPosY(posy + 0.1f);
        Triangle.setPosZ(posz + 0.1f);
    }

    if(accelx < -1 && posx > -3)
    {
        Triangle.setPosX(posx - 0.1f);
        Triangle.setPosY(posy - 0.1f);
        Triangle.setPosZ(posz - 0.1f);
    }
    break;
}
于 2013-09-14T18:09:39.777 に答える