Как проверить, находится ли событие касания wp7 XNA в определенном прямоугольнике - PullRequest
1 голос
/ 10 февраля 2012

Я хочу проверить, находится ли пользовательский щелчок в пределах набора заданных мною треугольников, но должен ли я сделать это другим способом, чтобы выполнить эту проверку?

Это то, что у меня сейчас, но ясомневаюсь, как сравнить объект прямоугольника с объектом касания

private bool CheckEnemyClicked(Vector2 vector2, out Enemy enemyOut)
{
    TouchCollection touches = TouchPanel.GetState();

    foreach (Enemy enemy in enemies)
    {
        //Find the rectangle of the sprite
        Rectangle rectangle = new Rectangle(
                                  (int)enemy.Position.X, 
                                  (int)enemy.Position.Y, 
                                  enemy.Width, 
                                  enemy.Height);

        //Check if click is hitting enemy
        if(touchinput is within rectangle)
        {
            enemyOut = enemy;
            return true;
        }
    }
    enemyOut = null;
    return false;
}

Ответы [ 2 ]

4 голосов
/ 10 февраля 2012

TouchCollection возвращает коллекцию объектов TouchLocation, которая имеет элемент «Position». Rectangle имеет метод Contains, который имеет перегрузку, которая может проверять, содержится ли в нем конкретная точка. Таким образом, платформа XNA делает всю тяжелую работу за вас.

Ваш код будет выглядеть примерно так для части проверки столкновения для Touch.

//Check if click is hitting enemy
foreach (TouchLocation location in collection)
{
     if (rectangle.Contains((int)location.Position.X, (int)location.Position.Y))
     {
          enemyOut = enemy;
          return true;
     }
}
2 голосов
/ 10 февраля 2012

TouchCollection - это набор точек касания (поскольку пользователь может касаться экрана в нескольких местах).Вам следует проверить отдельные точки касания в пределах TouchCollection и найти их расположение относительно прямоугольника вашего врага.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...