我如何讓我的敵人追逐我的球員?

當(dāng)我移動我的球員時(shí),我試著讓這10個(gè)敵人離開。我試著在狀態(tài)下做一些事情,但無法解決。

公共密封部分類主頁面:{int[]arr_Enemy=新int[10];

    Rectangle Enemy;

    Rectangle Player;

    Random rnd = new Random();  
    
    public MainPage()        
        
    {
        
    this.InitializeComponent();

    Window.Current.CoreWindow.KeyDown += PlayerMovement;

    MyCanvas.Background = new ImageBrush

       {

ImageSource=新位圖圖像(新Uri("ms-appx:///Assets/Background.jpg"))

        };

       Player = new Rectangle();

       Player.Width = 50;

       Player.Height = 50;

       Player.Fill = new ImageBrush

        {

ImageSource=新位圖圖像(新Uri("ms-appx:///Assets/PlAYER2.GIF"))

        };

       MyCanvas.Children.Add(Player);

       Canvas.SetTop(Player, 700);

       Canvas.SetLeft(Player, 900);

        for (int i = 0; i < arr_Enemy.Length; i++)

        {
          
            Enemy.Fill = new ImageBrush

            {

ImageSource=新位圖圖像(新Uri("ms-appx:///Assets/enemy.GIF"))

            };
         Enemy.Width = 120;

         Enemy.Height = 115;

         MyCanvas.Children.Add(Enemy);

         Canvas.SetTop(Enemy, rnd.Next(750));

         Canvas.SetLeft(Enemy, rnd.Next(750));

        }


    }
    private void PlayerMovement(CoreWindow sender, KeyEventArgs args)

    {


    VirtualKey movement = args.VirtualKey;

    switch (movement)

       {

         case VirtualKey.Up:
             Canvas.SetTop(Player, Canvas.GetTop(Player) - 10);
         break;

         case VirtualKey.Down:
             Canvas.SetTop(Player, Canvas.GetTop(Player) + 10);
         break;

         case VirtualKey.Left:
             Canvas.SetLeft(Player, Canvas.GetLeft(Player) - 10);
         break;

         case VirtualKey.Right:
             Canvas.SetLeft(Player, Canvas.GetLeft(Player) + 10);
         break;

        }
        


    }
   

} }

? 最佳回答:

我如何讓我的敵人追逐我的球員?

更好的方法是制作計(jì)時(shí)器,一步一步地將敵人移動到玩家身上。我們可以得到敵人和玩家的位置。并測量它們之間的距離。然后根據(jù)距離調(diào)用setleft-top方法。當(dāng)敵人和玩家交叉時(shí)停止移動。

for example

private void Chase(FrameworkElement enemy)
{
    var enemyLeft = Canvas.GetLeft(enemy);
    var enemyTop = Canvas.GetTop(enemy);
 
    var playerLeft = Canvas.GetLeft(Player);
    var playerTop = Canvas.GetTop(Player);
  
    var distance = new Point(playerLeft - enemyLeft, playerTop - enemyTop);

    if (distance.X == 0 && distance.Y == 0 || !DetectCollisions(Player,enemy).IsEmpty) return;

    if (distance.X > 0 && distance.Y > 0)
    {
        //down-right
        Canvas.SetTop(enemy, Canvas.GetTop(enemy) + 10);
        Canvas.SetLeft(enemy, Canvas.GetLeft(enemy) + 10);

    }
    else if (distance.X < 0 && distance.Y < 0)
    {
        //up-left
        Canvas.SetTop(enemy, Canvas.GetTop(enemy) - 10);
        Canvas.SetLeft(enemy, Canvas.GetLeft(enemy) - 10);
    }
    else if (distance.X > 0 && distance.Y < 0)
    {
        Canvas.SetTop(enemy, Canvas.GetTop(enemy) - 10);
        Canvas.SetLeft(enemy, Canvas.GetLeft(enemy) + 10);
        //up-right

    }
    else if (distance.X < 0 && distance.Y > 0)
    {
        Canvas.SetTop(enemy, Canvas.GetTop(enemy) + 10);
        Canvas.SetLeft(enemy, Canvas.GetLeft(enemy) - 10);
        //down-left
    }
    
}
主站蜘蛛池模板: 中文字幕一区二区三区在线播放| 日本一区二区三区久久| 老熟妇仑乱视频一区二区| 中文字幕一区在线观看视频| 国产一区二区三区精品视频| 国产婷婷色一区二区三区深爱网| 亚洲乱码一区av春药高潮| 中文字幕一区二区三区日韩精品| 国产激情一区二区三区在线观看| 国产99久久精品一区二区| 久久伊人精品一区二区三区 | 久久精品免费一区二区| 一区二区三区久久精品| 高清一区二区三区视频| 视频一区二区三区在线观看| 麻豆国产在线不卡一区二区| 人妻互换精品一区二区| 欧美日本精品一区二区三区 | 国产精品熟女一区二区| 一本大道东京热无码一区 | 亚洲AV无码一区二区三区鸳鸯影院 | 无码人妻AⅤ一区二区三区| 亚洲日韩精品一区二区三区无码| 久久无码人妻精品一区二区三区| 麻豆一区二区三区蜜桃免费| 一区二区三区免费电影| 精品一区二区三区四区在线| 国产在线精品一区二区三区直播| 精品福利一区二区三| 久久久91精品国产一区二区| 人妻无码视频一区二区三区| 五月婷婷一区二区| 国内精品视频一区二区三区八戒 | 国产福利电影一区二区三区,亚洲国模精品一区 | 国产福利91精品一区二区| 国产精品无码一区二区三区毛片| 国产精品视频免费一区二区三区 | 亚洲AV乱码一区二区三区林ゆな| 国产在线精品一区二区中文| 激情亚洲一区国产精品| 日韩美一区二区三区|