Помогите найти в чем проблема при перетаскивании объекта мышкой по Canvas С# WPF

Всем здравствуйте! В общем я начал изучать С# по книге HeadFirst, и там в первой главе нужно сделать игру в WPF. Если коротко, то на Canvas в случайном месте появляется два объекта - человек и портал. Так же там каждые 2 секунды появляются анимированные враги. Суть игры перетащить(мышкой) в портал как можно больше людей не прикасаясь к врагам. Код который в книге у меня работает оооочень криво, книга старая. Попытался сделать по своему. Игра работает, но когда я зажимаю ЛКМ и захватываю человечка, то он проходит сквозь врагов и реагирует на них только если я отожму кнопку прямо под врагом. Нужно чтобы если человек захвачен мышкой и попал на врага вызвался метод EndTheGame().введите сюда описание изображения Помогите исправить пожалуйста. Заранее спасибо)

    private void enemy_MouseEnter(object sender, MouseEventArgs e)
    {
        if (humanCaptured && Mouse.Capture(human))
            EndTheGame();
    }

    private void human_MouseDown(object sender, MouseButtonEventArgs e)
    {
        if (enemyTimer.IsEnabled)
        {
            relativePosition = e.GetPosition(human) - new Point();
            humanCaptured = true;
            human.IsHitTestVisible = false;
            Mouse.Capture(human);
        }
    }
    private void target_MouseEnter(object sender, MouseEventArgs e)
    {
        if (targetTimer.IsEnabled && humanCaptured)
        {
            progressBar.Value = 0;
            scoreAmount++;
            score.Text = "Score: " + scoreAmount;
            Canvas.SetLeft(target, random.Next(100, (int)playArea.ActualWidth - 100));
            Canvas.SetTop(target, random.Next(100, (int)playArea.ActualHeight - 100));
            Canvas.SetLeft(human, random.Next(100, (int)playArea.ActualWidth - 100));
            Canvas.SetLeft(human, random.Next(100, (int)playArea.ActualWidth - 100));
            humanCaptured = false;
            human.IsHitTestVisible = true;
        }
    }
    private void human_MouseMove(object sender, MouseEventArgs e)
    {
        if (humanCaptured)
        {
            var point = e.GetPosition(playArea);
            var newPos = point - relativePosition;
            Canvas.SetLeft(human, newPos.X);
            Canvas.SetTop(human, newPos.Y);
        }
    }
    private void human_MouseUp(object sender, MouseButtonEventArgs e)
    {
        Mouse.Capture(null);
        humanCaptured = false;
        human.IsHitTestVisible = true;
    }

Ответы (0 шт):