如何在Windows Phone / XNA上轻弹手势

时间:2012-04-18 03:28:11

标签: c# xna scroll windows-phone smooth

我在xna游戏的update()部分有这个:

            while (TouchPanel.IsGestureAvailable)
        {
            GestureSample gs = TouchPanel.ReadGesture();

            switch (gs.GestureType)
            {
                case GestureType.Flick:
                    _GameMap.GameCamera.Translate(new Vector2(-gs.Delta.X/2, 0));
                    //moves the camera by this amount 
                    break;
            }
        }

但不出所料,当我轻弹没有滚动(如谷歌地球或愤怒的小鸟)时,它只是一个开始和结束。如何在轻弹中实现滚动?

1 个答案:

答案 0 :(得分:5)

来自Windows Phone 7 Game Development

  

当用户释放与...的联系时,会触发轻弹手势   screen(...)这对于启动动态滚动非常有用,   在朝向该方向释放之后,对象继续移动   用户一直在移动。

如果此处所述的动态滚动是您想要的,那么在检测到轻弹手势时,保存Delta,并在每个帧上移动该Delta(经过一些常数)并将其减少一定量。这将导致屏幕逐渐移动和减速。

如果要按字面意思理解文本,则仅在用户发布联系人时报告该手势,这意味着在联系期间联系页面将不会移动。在这种情况下,您还需要查找某种拖拽手势(可能是FreeDrag)并在拖动过程中开始移动屏幕。