我目前有以下代码:
internal void HandleTouch()
{
TouchPanel.EnabledGestures = GestureType.DragComplete | GestureType.FreeDrag;
while (TouchPanel.IsGestureAvailable)
{
GestureSample gesture = TouchPanel.ReadGesture();
if (gesture.GestureType == GestureType.DragComplete)
{
MyAction(gesture.Delta.X, gesture.Delta.Y);
}
else if (gesture.GestureType == GestureType.FreeDrag)
{
OtherAction();
}
}
}
我遇到的问题是Delta
始终为0.我在某处看到Monogame处理拖动手势的方式不同,但无论我使用此方法,还是手动迭代触摸集合,我都会得到相同的问题。
如何更改此值以便获得正确的delta值?
答案 0 :(得分:0)
您可以使用
实现相同的目标TouchCollection touches = TouchPanel.GetState();
然后第一次检测到触摸
touches.First().State == TouchLocationState.Pressed || touches.First().State == TouchLocationState.Moved
您保存位置touches.First().Position
然后检测阻力何时结束
touches.First().State == TouchLocationState.Released
您可以使用Delta
Vector2.Distance