Как правильно расположить объекты в разных разрешениях в Unity? - PullRequest
0 голосов
/ 12 апреля 2020

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

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Android;

public class PowerPosition : MonoBehaviour
{
    void Start()
    {
        float w = Screen.width;
        float h = Screen.height;
        Vector2 position = (Camera.main.ScreenToWorldPoint(new Vector2(w * 0.9f, w * 0.53f)));
        float ratio = (w / h) / (9f / 16f);
        gameObject.transform.position = new Vector3(position.x * ratio, position.y * ratio, 0);
        gameObject.transform.localScale = new Vector3(gameObject.transform.localScale.x * ratio, gameObject.transform.localScale.y * ratio, gameObject.transform.localScale.z * ratio);

Проблема с позиционированием. Это изменяет и объекты, которые должны иметь относительные расстояния друг от друга, запутываются. Объекты, которые должны появляться один над другим, становятся слишком близкими и перекрываются. «Положение * отношение» было тестом, оно не работает ни с этим, ни с ним. Вот, например, у меня были предметы, которые я хотел держать на одинаковом расстоянии от нижнего правого края экрана.

Как это можно исправить?

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

Я попытаюсь объяснить это по-другому.

Устройство имеет разрешение экрана по осям X, Y, глубине цвета и ppi / dpi.

Вы можете купить дисплей с 1920x1080xЦвета с 6 "или 32". При использовании больших дисплеев плотность пикселей ниже по сравнению с маленькими дисплеями.

Устройство само меняет X и Y только при наличии датчика ориентации.

Пейзаж 1920x1080 становится портретным 1080x1920.

Когда я беру iPhone, дисплей имеет более высокую плотность пикселей, чем более дешевые устройства Android.

В математике есть знаменитые три предложения, которые подходят для вычисления пропорций.

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

Я работаю в основном с горизонтальным центрированием. Поэтому я сохраняю симметрию.

0 голосов
/ 12 апреля 2020

Вы можете использовать процентный расчет в качестве ориентационной базы для масштабирования. Это представляет масштабируемость отношений.

В вашем разуме есть ложный друг. Дисплеи имеют разные точки на дюйм. Скажет, это значение может быть включено в ваш расчет.

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