【问题标题】:Smooth/Accurate Kinect movement in AS3 gameAS3 游戏中流畅/准确的 Kinect 运动
【发布时间】:2012-12-30 12:42:49
【问题描述】:

对于一个项目,我需要使用 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 中,我让它们向上或向下移动。

这是我实现的最流畅的方式,但它不再很准确。前两种方法没有某种延迟。

我想知道是否有可能同时使运动平滑和准确?以及这怎么可能。

【问题讨论】:

    标签: actionscript-3 kinect physics


    【解决方案1】:

    如果您已经有了一个准确的解决方案,也许您可​​以尝试在其中添加一些缓和以使其平滑。您可能想尝试在 enterFrame 循环中使用它

     _paddleLeft.y += 
                ((userLeft.leftHand.position.rgbRelative.y * stage.stageHeight*2)
                 -_paddleLeft.y)*0.3;
    

    0.3 可以更改为 0 到 1 之间的其他数字,具体取决于您想要的缓动速度...这是我的最佳猜测,希望对您有所帮助^^

    【讨论】:

    • 谢谢。我们使用一些数学公式使运动更加准确,并且平滑效果与您的答案一样好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多