Я хочу бросить звезду в направлении перетаскивания, сделанного пользователем

Я хочу разработать игру, в которой пользователь будет тянуться к цели, и как только он будет тянуться, в цель будет брошена звезда. Но у меня проблемы на самых ранних этапах этого развития. Я не могу двигать звезду в угловом направлении. Я сделал следующий код, но звезда уходит, как пользователь перетаскивает. Я не хочу так. Я хочу это следующим образом: если пользователь перетаскивает в определенном направлении, тогда звезда будет брошена в этом направлении; прямо не в соблазнительной манере.

вот что я попробовал:

       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/

Другие вопросы по тегам