我目前差不多在android上开发我的第一个应用程序,除了人类跳跃检测似乎太慢/不准确我的愿望。我使用了搜索栏来改变灵敏度,但我只相信我的检测算法是低效的。我试着到处寻找正确的跳跃检测,但没有运气。它似乎归结为一些好的物理和数学。
这是我的算法(来自onSensorChangeListener()内部),当口袋中的手机向上时,灵敏度为0-100,但默认为50:
if(phonePosition=="UP"){
if(event.values[1]>(15-(sensitivity-50)/10)){
inAir=true;
}
if(inAir&&event.values[1]<(5+(sensitivity-50)/10)){
freeFall=true;
}
if(freeFall&&event.values[1]>(13-(sensitivity-50)/10)){
rebound=true;
}
if(rebound&&event.values[1]<(10+(sensitivity-50)/10)&&event.values[1]>(1-(sensitivity-50)/10))
{
sp.play(beep1,1,1,0,0,1);
jumpCount++;
inAir=false;
freeFall=false;
rebound=false;
}
jumps.setText(Integer.toString(jumpCount));
}
以下是一些跳跃的xyz值图表,如果有帮助的话: http://pastebin.com/DtTC3DnL