[英]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.