SDHOPS
@SDHOPS
Дизайнер

Как установить порог камеры в Unity3D?

Доброго времени суток, уважаемые! Столкнулся с проблемкой, может кто дать ссылку на скрипт или на наводки, или на определенный урок, где именно это дело можно изучить. В общем, проблема обстоит в том, что когда любую основную камеру вешаешь на персонажа, то некоторые элементы становятся видны, которые видны не должны быть. К примеру, 2д игра, вешаю на персонаж камеру, все круто, она следит за ним, но. Если персонаж подойдет к краю карты допустим, то камера также передвигается за ним, и уже лицезреет всё то, что за рамкой игрового пространства. Это не круто, бро. Насчёт отдельного скрипта с камерой всё ок, нашёл урок на это, но на порог камеры к сожалению нет, буду благодарен за помощь от опытных людей.
  • Вопрос задан
  • 619 просмотров
Решения вопроса 1
jamakasi666
@jamakasi666
Просто IT'шник.
А чисто пораскинуть мозгами без уроков?
1) Вот у тебя есть камера у которой есть ширина Wcam, высота Hcam, также известна ее координата Хcam и Ycam.
2) Так же у камеры есть ее положение в пространстве по горизонтали Х и вертикали Y.
3) Предполагаю что по логике скрипта из другого урока откуда была взята привязка камеры к игроку т.е. Хcam и Ycam камеры привязаны к Х и Y игрока.
4а) Есть мир к примеру плоскость у которой тоже есть свои координаты и известны точка начала XstartYstart и конца XendYend.
4б) Можно использовать некоторый объект, к примеру создать объект с координатами в мире Хobj и Yobj.
5) Зная все вышеперечисленное можно легко посчитать что алгоритм крайне просто посчитать и внести нужные правки.
6) Вносим в скрипте где идет приравнивание "привязка камеры к игроку т.е. Х и Y камеры привязаны к Х и Y игрока" вставку в виде условий
6а) ЕСЛИ( (Xcam+Wcam)>= Xend) ТОГДА ничего_не_делаем ИНАЧЕ Xcam=X. Аналогично делаются проверки на оставшиеся 3 стороны экрана.
6б) ЕСЛИ( (Xcam+Wcam)>= Хobj ) ТОГДА ничего_не_делаем ИНАЧЕ Xcam=X. Аналогично делаются проверки на оставшиеся 3 стороны экрана. Бонус в том что таких точек можно наставить много, к примеру поставить ее на двери и если игрок открыл дверь то камера заехала за ним.
* Опционально можно вместо "ТОГДА ничего_не_делаем ИНАЧЕ" сделать зум камеры, к примеру подошли к двери и чем ближе к ней тем ближе камера не выезжая за грань точки\мира.

ПС уроки, туториалы и готовые скрипты сделаны не для того чтобы взять и непонимая\ не глядя скопипастить, а для того что бы понять как это сделано и работает. Другой случай если это что то крайне сложное или затратит невероятное время (к примеру сделать сложный шейдер\эффект\физическое явление и т.д.). Все остальное это базовые вещи школьного курса, замечу что школьного а не институтского.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@saylar
Разработчик Unity C#
https://www.youtube.com/watch?v=DoDZuFNh4tw&t=720s
Я думаю это тебе поможет
Ответ написан
Комментировать
BasmanovDaniil
@BasmanovDaniil
Геймдизайнер-телепат
Используйте Cinemachine, тогда не придётся никакого кода писать. В этом ролике как раз показано, как оно работает. А здесь можно посмотреть официальный туториал.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы