Я хочу бросить звезду в направлении перетаскивания, сделанного пользователем
Я хочу разработать игру, в которой пользователь будет тянуться к цели, и как только он будет тянуться, в цель будет брошена звезда. Но у меня проблемы на самых ранних этапах этого развития. Я не могу двигать звезду в угловом направлении. Я сделал следующий код, но звезда уходит, как пользователь перетаскивает. Я не хочу так. Я хочу это следующим образом: если пользователь перетаскивает в определенном направлении, тогда звезда будет брошена в этом направлении; прямо не в соблазнительной манере.
вот что я попробовал:
private void OnUpdate(object sender, GameTimerEventArgs e)
{
TouchPanel.EnabledGestures = GestureType.FreeDrag | GestureType.DragComplete ;
if (TouchPanel.IsGestureAvailable)
{
gesture = TouchPanel.ReadGesture();
}
switch(gesture.GestureType)
{
case GestureType.FreeDrag:
position = gesture.Position * 1.2f;
break;
}
}
1 ответ
Решение
Просто:
Vector2 startSwipePos; // When the user starts swiping
Vector2 endSwipePos; // When the user ends swiping, define those two
Vector2 difference = endSwipePos - startSwipePos;
difference.Normalize(); // Get only the direction, you don't have to do this,
// you can also make the speed less instead.
Vector2 velocity = difference * (SPEED HERE IN FLOAT);
pos += velocity;
Смотрите также это: http://xnafan.net/2012/12/pointing-and-moving-towards-a-target-in-xna-2d/