公共密封部分類 MainPage : Page
{
Enemy[] arr_Enemy = new Enemy[10];
Rectangle Enemy;
Rectangle Player;
Random rnd = new Random();
public MainPage()
{
this.InitializeComponent();
Window.Current.CoreWindow.KeyDown = PlayerMovement;
MyCanvas.Background = new ImageBrush
{
ImageSource = new BitmapImage(new Uri("ms-appx:///Assets/Background.jpg"))
};
Player = new Rectangle();
Player.Width = 50;
Player.Height = 50;
Player.Fill = new ImageBrush
{
ImageSource = new BitmapImage(new 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 = new Rectangle();
Enemy.Fill = new ImageBrush
{
ImageSource = new BitmapImage(new 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;
}
(我試著做這樣的陳述,但它沒有用。) -
if (Canvas.GetLeft(Player) == Canvas.GetLeft(Enemy) &&
Canvas.GetTop(玩家) == Canvas.GetTop(敵人))
uj5u.com熱心網友回復:
如何在我的玩家和敵人之間進行碰撞?
您可以使用Intersect方法來確定元素是否具有共同點。例如
private Rect DetectCollisions(FrameworkElement player, FrameworkElement enemy)
{
var rp = new Rect(Canvas.GetLeft(player), Canvas.GetTop(player), player.ActualWidth, player.ActualHeight);
var re = new Rect(Canvas.GetLeft(enemy), Canvas.GetTop(enemy), enemy.ActualWidth, enemy.ActualHeight);
rp.Intersect(re);
return rp;
}
如果玩家和敵人發生碰撞,該方法會將新的交集 Rect 存盤到玩家 rect 變數中,而不是回傳Rect.Empty結構。
foreach (var item in enemyList)
{
var rect = DetectCollisions(Player, item);
if (!rect.IsEmpty)
{
MyCanvas.Children.Remove(item);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/485886.html
