好吧所以我正在研究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;
我不知道为什么它仍然可以离开屏幕。任何人吗?
答案 0 :(得分: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;
}