[英]LibGDX - Accelerometer Problems
我遇到了一些问题。 我正在使用LibGDX。
当我碰到一个物体时,我的战斗机应该掉到地上。 但是,由于有了加速度计,即使它死了,我仍然可以上下移动它。 尽管x轴上的滚动条停止了。 问题:(已修复)在被Ive击打后,我如何才能使加速度计停止运动,并使战斗机加速至地面(在没有加速度计的情况下,仅靠加速度计)?
当我上下移动战斗机时,从“向上移动”到“向下移动”的过渡并不顺利。 好像迟钝了。 问题:如何增加加速度计的灵敏度?
另外,当我进一步倾斜手机时,速度保持不变。 问题:如何相对于倾斜度提高速度?
谢谢 !
代码如下:
加速度计代码:
float accelY = Gdx.input.getAccelerometerY();
if (Gdx.input.getAccelerometerY() < 5){
velocity.y = -40;
}
if (Gdx.input.getAccelerometerY() > 5){
velocity.y = 40;
}
当战斗机击中一个物体并死亡时:
public void die() {
isAlive = false;
velocity.y = 0;
acceleration.y = 460;
}
您需要包装加速器。 与Alive变量一起使用
if(isAlive)
{
if (Gdx.input.getAccelerometerY() < 5)
{
velocity.y = -40;
}
if (Gdx.input.getAccelerometerY() > 5)
{
velocity.y = 40;
}
}
对于第二季度
if (Gdx.input.getAccelerometerY() < 5){
velocity.y = -40;
}
if (Gdx.input.getAccelerometerY() > 5){
velocity.y = 40;
}
它不平滑的原因是您没有对运动进行插值。 一种解决方法是:
if (Math.abs(Gdx.input.getAccelerometerY()) > 5){
YFactor = Gdx.input.getAccelerometerY();
}
//游戏循环中的某个位置
if(YFactor >0)
{
if(velocity.y) < YFactor*8{ //tweak this value
velocity.y += YFactor; //tweak this value
}
}
else
{
//reverse above logic
}
这是要一直保持-速度或+,直到YFactor * 8(这就是Q3所需要的)
这只是概念的介绍,您需要处理变量的范围。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.