Я занимаюсь разработкой карточной игры в XNA.
Есть ли OnClick
в XNA событие для объектов?
Я пытаюсь заставить карты двигаться, когда игрок нажимает на них. В этом проекте есть класс Sprite, который тянет карту, но я немного застрял, потому что я не знаю, как использовать OnClick
события или что-то подобное.
if(MouseLeftPress()){ DoSomething(); }
,MouseLeftPress()
- это метод, который вы пишете для сравнения текущего и предыдущего состояния левой кнопки мыши. Я нахожу это проще, чем реализовывать события большую часть времени.Вам нужно будет реализовать это самостоятельно. Попробуйте посмотреть учебник по адресу: http://bluwiki.com/go/XNA_Tutorials/Mouse_Input
источник
XNA дает вам только достаточно для создания ваших собственных входных классов - и вы должны делать это, учитывая полезность, которую они предлагают.
Я бы порекомендовал класс ввода мыши, описанный в этом сообщении в блоге ( исходный код ). Он обнаруживает нажатие, удержание или отпускание кнопки и позволяет получить эту информацию с помощью опроса или событий.
В той же заметке в блоге также представлены классы устройств ввода клавиатуры и геймпада.
источник
Фактический код для проверки щелчка мышью в XNA выглядит примерно так;
источник
Если ваша игра 3D, вы можете реализовать сбор, который описан здесь: http://create.msdn.com/en-US/education/catalog/sample/picking_triangle . По сути, это создает луч от камеры до места, где щелкает мышь (с небольшой матрицей, не выступающей там), затем вы проверяете, не пересекался ли какой-либо из ваших объектов с лучом.
Если ваша игра 2D, вы сможете довольно легко перевести координаты окна в игровые координаты. Затем проверьте, находятся ли выбранные координаты в пределах какого-либо из ваших объектов.
источник
Самый простой способ узнать, нажата ли мышь, это
Теперь в методе обновления добавить это
надеюсь, это помогло
источник