С Новым годом! Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
2 / 2 / 0
Регистрация: 09.11.2014
Сообщений: 124

Размер карты не подстраиваются под размер экрана

07.11.2015, 17:07. Показов 3188. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется проблема при публикации игры (построении готового проекта для Windows). Делаю 2D шутер, но сам проект трехмерный т.к. игровые объекты объемные, камера находится сверху и игрок управляет кораблем уничтожая врагов. Сделал я ограничения по карте, просто чтобы нельзя было переместить корабль игрока за пределы сцены. При настройке координат, ограничивающих область карты во время запуска проекта включал maximize on Play и настраивал нужные координаты, там корабль упирается в края экрана и все работает хорошо. Вот так это выглядит:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//создание границ упора персонажа, чтобы корабль не уходил за пределы сцены
public class Boundary
{
    public float xMin, xMax, zMin, zMax;
}
 
public class PlayerController : MonoBehaviour
{
    //типа много кода...
 
 
    //функция управления кораблем
    void FixedUpdate()
    {
        //здесь тоже есть код, но нам он сейчас не нужен.
 
 
        //не дает кораблю игрока выходить за пределы карты.
        rigidbody.position = new Vector3
        (
            Mathf.Clamp(rigidbody.position.x, boundary.xMin, boundary.xMax),
            0.0f,
            Mathf.Clamp(rigidbody.position.z, boundary.zMin, boundary.zMax)
        );
    }
}
Проблема в том, что в готовом проекте .exe в зависимости от размера экрана координаты никак не зависят, а значит, если при запуске игры вместо 1920*1080 (таково разрешение моего экрана) выбрать 1280*1024, то корабль будет улетать за сцену, да и при размерах моего экрана корабль все равно немного уходит за сцену. Как сделать, чтобы координаты зависели от размера экрана игры и при любом разрешении игровой корабль упирался в края сцены?

Добавлено через 19 часов 24 минуты
Неужели никто не знает как это исправить? может у кого есть ссылки про адаптацию к различным соотношениям сторон в unity? Сам ничего нужного не нашел, но где-то пара слов было написано о том, что элементы интерфейса по-умолчанию привязаны к центру родительского прямоугольника и, что они сохраняют постоянное смещение относительно центра. Но не нашел мануалы про то как сделать приложение адаптивным под разные разрешения (на Windows).
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.11.2015, 17:07
Ответы с готовыми решениями:

Game object ui text под размер контента
Как увеличить объект с компонентом UI Text по вертикали, под кол-во букав, загруженных из xml? Может я не знаю о каком-либо флаге? Или че...

Размер stage, под размер экрана устройства, возможно?
Как указать размер stage, чтобы оно было равно размеру экрана пользователя? :)

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

5
44 / 17 / 7
Регистрация: 19.09.2015
Сообщений: 55
07.11.2015, 18:20
http://docs.unity3d.com/Script... Point.html
0
2 / 2 / 0
Регистрация: 09.11.2014
Сообщений: 124
07.11.2015, 18:39  [ТС]
Sadonis, уже пытался сделать через Camera.ScreenToWorldPoint, но не получается. Не знаю как правильно применить данный скрипт. Может вы знаете как можно сделать так, чтобы не задавать координаты в которые упирается персонаж (как сделал я), я прописать код так, чтобы корабль игрока упирался именно в камеру, то есть, чтобы с краями камеры и игровым объектом происходило столкновение?
0
44 / 17 / 7
Регистрация: 19.09.2015
Сообщений: 55
07.11.2015, 20:50
C#
1
2
3
4
5
6
7
8
9
10
11
 //---Метод работает если камера ориентирована 90,0,0 град.
    Rect GetWorldRectCamera(int nearClipPlane)//----где nearClipPlane расстояние от камеры до плоскости(карты)
    {
        Vector3 pointWorldA = Camera.main.ScreenToWorldPoint(new Vector3(0, 0, nearClipPlane));
        Vector3 pointWorldB = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width, Screen.height, nearClipPlane));
        float wight = Vector2.Distance(new Vector2(pointWorldA.x, 0), new Vector2(pointWorldB.x, 0));
        float height = Vector2.Distance(new Vector2(pointWorldA.z,0), new Vector2(pointWorldB.z,0));
 
        Rect rect = new Rect(pointWorldA.x, pointWorldB.z, wight, height);
        return rect;
    }
1
2 / 2 / 0
Регистрация: 09.11.2014
Сообщений: 124
07.11.2015, 21:17  [ТС]
Sadonis, не выходит почему-то. Камера наклонена на 90 град. по X координате, тип камеры ортографический (не знаю играет ли это роль), ваi метод вставлял в скрипт, где прописаны границы для игрока и создавал отдельный скрипт с вашим методом и добавлял его камере, но ничего не помогает. Может дело в разрешающей способности? Если зайти в Edit - Project setting - Player, то вот такие настройки выставлены там.
Миниатюры
Размер карты не подстраиваются под размер экрана  
0
2 / 2 / 0
Регистрация: 09.11.2014
Сообщений: 124
07.11.2015, 21:41  [ТС]
Sadonis, нашел корень проблемы. "Насилуя" настройки и параметры проекта в Edit - Project setting - Player нашёл пункт supported aspect ratios в нём у меня были выставлены все форматы изображения, а размеры карты сделал только для 16:9. В общем проблема с уходом за камеру решена. Тем не менее спасибо, что хоть как-то старались помочь, очень признателен за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.11.2015, 21:41
Помогаю со студенческими работами здесь

Как подгонять размер диалоговых окон по размер экрана?
Здравствуйте! Как подгонять размер диалоговых окон по размер экрана? У меня есть класс, унаследованный от DialogFragment. При запуске...

Панель под размер экрана
Добрый вечер. Подскажите как программно настроить размер панели под экран монитора: вот например: если 1440х900 ,то ширина допустим...

Подогнать сайт под размер экрана
Всем здравствуйте. Есть самый простой сайт из нескольких html страниц. Всем необходимым требованиям соответсвует, кроме размера....

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

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru