При использовании изображения в качестве кнопки, как я могу игнорировать прозрачные части при обнаружении щелчка - PullRequest
0 голосов
/ 12 июля 2019

Я создаю 2d игру с моим братом в Unity и работаю над интерактивной картой (с использованием пиксельной графики). Я хочу разместить разные изображения территорий вместе, как кусочки головоломки, но когда он обнаруживает щелчок по территории, я не хочу, чтобы были обнаружены прозрачные части изображения.

Я новичок, и мне нужна помощь с этим. Любая помощь приветствуется.

Пример карты и перекрытия. Example of the map and overlap.

Ответы [ 2 ]

2 голосов
/ 12 июля 2019

Возможно, вы можете использовать Image.alphaHitTestMinimumThreshold.

Как сказано в Документация Unity :

Порог альфа определяет минимальный альфа, который пиксель должен иметь длясобытие, которое считается «попаданием» на изображение.

Итак, вам просто нужно добавить скрипт, который изменяет это свойство для изображений, которые вы хотите игнорировать щелчком в прозрачных частях.Это может быть что-то вроде:

public Image image;

void Start()
{
    //Any desired value between 0 and 1.
    image.alphaHitTestMinimumThreshold = 0.5f;
}
0 голосов
/ 12 июля 2019

Когда вы щелкаете поле, и оно выбрано, спрайт (визуальная часть поля) не имеет значения.Все это опирается на алгоритм, который «соединяет» мышь и игру.Это проще, чем кажется.

Поскольку вы используете единство, вы редко будете иметь дело с этим алгоритмом, но вы должны понимать его, чтобы реализовать свой собственный код.То, как это работает (возможно, но всегда зависит от вашей реализации), заключается в том, что ваша «территория» имеет компонент «столкновения».В выбранном вами компоненте он может взаимодействовать с мышью, а затем вы реализуете это взаимодействие.

В этот момент, если вы не сделаете ничего особенного, каждая часть формы столкновения вызовет один и тот же эффект.В этом есть смысл.Итак, теперь, чтобы решить вашу проблему ...

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

ИЛИ

Вы должны исправить свою форму столкновения так, чтобы она соответствовала фактическому «изображению».Это означает использование многоугольника с несколькими вершинами и ручное сопоставление его со спрайтом.

Вы можете сделать любой из них в зависимости от ситуации.В качестве упражнения сделайте номер 1 на этот раз (также, поскольку границы хаотичны).Это НЕ сложно.Подумайте, если каждая прозрачная область имеет один и тот же «цвет», если вы можете проверить, какой пиксель изображения был нажат, то вам просто нужно знать, какой цвет в этой точке.Вы также можете попробовать различные решения.

Бонус заключается в том, чтобы работать, если фактическое «изображение» имеет прозрачную область.

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