0

好的,所以我正在使用 OpenGL ES 做一些事情,我想用 Device Orientation 移动一些东西,现在它工作得很好......我的意思是移动工作但由于某些原因仍然超出了我给它的界限。这是我的代码:

        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 回答