对于一个项目,我需要使用 Kinect for Xbox 制作一个 flashgame。使用 AS3NUI 库来访问大多数 Kinect 功能对我来说效果很好。
这是一个乒乓球游戏,你必须通过手部运动垂直移动你的球拍。我尝试了几种移动桨的方法,但没有一个是真正准确的。如果它们更准确,它们就不再平滑了。
我的第一个方法是将 paddle.y 设置为 hand.y 的值。
_paddleLeft.y = (userLeft.leftHand.position.y);
当然,结果很糟糕。这是我的下一次尝试:
_paddleLeft.y = (userLeft.leftHand.position.rgbRelative.y * stage.stageHeight*2);
这非常准确,但一点也不顺畅,有时很难到达舞台的顶部或底部。
最后,我尝试了其他方法。我保存了最后一个 Y 位置的手,并检查了新位置是更高还是更低,然后我向上或向下移动了桨。
currYLeft = userLeft.leftHand.position.rgb.y;
currYRight = userRight.rightHand.position.rgb.y;
if (currYLeft > prevYLeft + 10){
isDown1 = true;
isUp1 = false;
}else if( currYLeft < prevYLeft - 10){
isDown1 = false;
isUp1 = true;
}
prevYLeft = userLeft.leftHand.position.rgb.y;
prevYRight = userRight.rightHand.position.rgb.y;
在另一个 enterframehandler 中,我让它们向上或向下移动。
这是我实现的最流畅的方式,但它不再很准确。前两种方法没有某种延迟。
我想知道是否有可能同时使运动平稳和准确?以及这是怎么可能的。