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

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

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

Author24 — интернет-сервис помощи студентам
Имеется проблема при публикации игры (построении готового проекта для 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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
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 2
http://docs.unity3d.com/Script... Point.html
0
2 / 2 / 0
Регистрация: 09.11.2014
Сообщений: 124
07.11.2015, 18:39  [ТС] 3
Sadonis, уже пытался сделать через Camera.ScreenToWorldPoint, но не получается. Не знаю как правильно применить данный скрипт. Может вы знаете как можно сделать так, чтобы не задавать координаты в которые упирается персонаж (как сделал я), я прописать код так, чтобы корабль игрока упирался именно в камеру, то есть, чтобы с краями камеры и игровым объектом происходило столкновение?
0
44 / 17 / 7
Регистрация: 19.09.2015
Сообщений: 55
07.11.2015, 20:50 4
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  [ТС] 5
Sadonis, не выходит почему-то. Камера наклонена на 90 град. по X координате, тип камеры ортографический (не знаю играет ли это роль), ваi метод вставлял в скрипт, где прописаны границы для игрока и создавал отдельный скрипт с вашим методом и добавлял его камере, но ничего не помогает. Может дело в разрешающей способности? Если зайти в Edit - Project setting - Player, то вот такие настройки выставлены там.
Миниатюры
Размер карты не подстраиваются под размер экрана  
0
2 / 2 / 0
Регистрация: 09.11.2014
Сообщений: 124
07.11.2015, 21:41  [ТС] 6
Sadonis, нашел корень проблемы. "Насилуя" настройки и параметры проекта в Edit - Project setting - Player нашёл пункт supported aspect ratios в нём у меня были выставлены все форматы изображения, а размеры карты сделал только для 16:9. В общем проблема с уходом за камеру решена. Тем не менее спасибо, что хоть как-то старались помочь, очень признателен за помощь.
0
07.11.2015, 21:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.11.2015, 21:41
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru