2014-03-05 41 views
0

我想開發一個遊戲,用戶將拖拽到一個目標上,一旦他拖拉,一顆星星就會被扔向目標。但是我在這個發展的最初階段遇到了問題。我無法在角度方向上移動恆星。我做了下面的代碼,但明星隨用戶拖動。我不想那樣。我希望如下:如果用戶在特定的方向上拖動,那麼這個星星將朝這個方向拋出;直接不以彎曲的方式。我想在用戶完成的阻力方向上拋出一顆星星

這裏是我的嘗試:

 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起點和當用戶點擊該按鈕得到。然後等待用戶解鎖按鈕並使用vector2獲取結束位置。然後獲取點之間的角度並向該方向發送星星。 – deathismyfriend

回答

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/