2016-02-18 5 views
2

Я по-прежнему новичок в Unity, и я был бы признателен за любую помощь в этой проблеме.Как сделать 2D-коллайдер с помощью элемента пользовательского интерфейса, к которому они привязаны?

У меня есть эта настройка, которая хорошо работает с использованием разрешения экрана, на котором я разрабатывал. Я считаю, что элементы пользовательского интерфейса хорошо меняются, когда я меняю разрешение, но я только что узнал, что коллайдеры, которые я сделал (красные линии на изображении), этого не делают. В настоящее время я использую красные коллайдеры, добавленные в холст. Я также попробовал добавить на каждую панель отдельные пограничные коллайдеры. Затем я попробовал box colliders. Я попытался превратить панели + коллайдеры в сборные. Все безрезультатно. Я также попытался установить точки кросс-коллайдеров с помощью скрипта, чтобы они всегда были обернуты вокруг панелей, но я не могу получить никакого столкновения (примечание: я не знаю, как показать/рендерить эти создаваемые во время выполнения коллайдеры поэтому я не совсем уверен, что они именно то, как я хочу, чтобы они были).

tldr; кто-нибудь знает, как заставить коллайдеры масштабироваться или обертывать элементы пользовательского интерфейса, к которым они привязаны?

ui layout image

+0

Ну, используя коллайдеров элементы интерфейса могут не сработает. Попробуйте добавить коллайдер в элементы, отличные от UI (за пределами холста), и сохраните его пропорцию, если он будет меняться в разных разрешениях. –

+0

Он работает, но я не могу его масштабировать. кто-то также сказал мне, что физика на элементах пользовательского интерфейса обычно приводит к низкой производительности, поэтому я открыт для преобразования их в реальные игровые объекты. Я просто пытался использовать сборные файлы, и хотя я могу их масштабировать, я не могу их привязать с помощью редактора. Я даже не знаю, возможно ли это с помощью скрипта. – Ferdie

+1

ваш твой прав. Ну, поскольку вы развиваетесь в 2D-среде, вы можете легко получить ширину и высоту экрана, поэтому сделайте объект размером единицы, добавьте коллайдер 2d коробки, проверьте коэффициент пользовательского интерфейса с экрана, например, вы оставили панель на 12,5% общая ширина, поэтому масштабируйте и расположите его соответственно. –

ответ

1

Так, коллайдерах работает нормально с интерфейсом. Имейте в виду, что коллайдеры работают в единицах, но холст в пикселях.

Если вам необходимо установить BoxCollider2D компонент размера с размером изображения, вам нужно проверить значение, которое вы используете для параметра Reference Pixels per Unit на вашем Canvas Scaler.

Это означает, что если ваше изображение 100px в ширину вам нужно установить на шкале коллайдера 100 единиц.

Это то, что вам нужно сделать:

gameObject.GetComponent<BoxCollider2D>().size = new Vector2 (
    gameObject.GetComponent<RectTransform>().sizeDelta.x, 
    gameObject.GetComponent<RectTransform>().sizeDelta.y 
    ); 

 Смежные вопросы

  • Нет связанных вопросов^_^