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

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

07.11.2015, 17:07. Показов 3206. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru