1

我在 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;
            }
        }

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

4

1 回答 1

5

来自Windows Phone 7 游戏开发

当用户释放与屏幕的接触时会触发轻弹手势 (...) 这对于启动动态滚动很有用,其中对象在向用户移动的方向释放后继续移动。

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

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

于 2012-04-19T05:27:40.600 回答