Доброго времени суток, уважаемые! Столкнулся с проблемкой, может кто дать ссылку на скрипт или на наводки, или на определенный урок, где именно это дело можно изучить. В общем, проблема обстоит в том, что когда любую основную камеру вешаешь на персонажа, то некоторые элементы становятся видны, которые видны не должны быть. К примеру, 2д игра, вешаю на персонаж камеру, все круто, она следит за ним, но. Если персонаж подойдет к краю карты допустим, то камера также передвигается за ним, и уже лицезреет всё то, что за рамкой игрового пространства. Это не круто, бро. Насчёт отдельного скрипта с камерой всё ок, нашёл урок на это, но на порог камеры к сожалению нет, буду благодарен за помощь от опытных людей.
А чисто пораскинуть мозгами без уроков?
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 стороны экрана. Бонус в том что таких точек можно наставить много, к примеру поставить ее на двери и если игрок открыл дверь то камера заехала за ним.
* Опционально можно вместо "ТОГДА ничего_не_делаем ИНАЧЕ" сделать зум камеры, к примеру подошли к двери и чем ближе к ней тем ближе камера не выезжая за грань точки\мира.
ПС уроки, туториалы и готовые скрипты сделаны не для того чтобы взять и непонимая\ не глядя скопипастить, а для того что бы понять как это сделано и работает. Другой случай если это что то крайне сложное или затратит невероятное время (к примеру сделать сложный шейдер\эффект\физическое явление и т.д.). Все остальное это базовые вещи школьного курса, замечу что школьного а не институтского.
Cпасибо, за подсказку. Я просил совет, наводку на урок, именно для того чтобы понять как работает, а не тупо копипастить, я вроде так и написал в вопросе. Я не просил скинуть мне готовый скрипт. Ведь уроки на то и нужны, чтобы понять то, что разъясняет объясняющий. В любом случае, благодарю. И да, я не программист, и в этом деле только начинающий, поэтому пока работаю по урокам и беру с пользой информацию.
И да, я не программист, и в этом деле только начинающий, поэтому пока работаю по урокам и беру с пользой информацию.
сильно рад что не копипастер, лучше подучи алгоритмы а любой ЯП всего лишь их реализует. Просто сейчас очень часто, по крайне мере у меня, ситуация когда кто то спрашивает "у меня такойто грандиозный проект но вот тут проблема, помогите или пните в туториал, помогите?!" а следом видишь что "Some resource not found" или "divide by zero exception" и становится просто страшно и обидно.
Честно пытайся и старайся думать больше сам, чем меньше "подглядываний" и копипаст тем уникальнее, интереснее и круто получается проект. Даже несмотря на ошибки и баги. Вспомнить теже приколы в виде распрыжки в квейке\хл, вроде баг но темнемение одна из фич движка игр.
Используйте Cinemachine, тогда не придётся никакого кода писать. В этом ролике как раз показано, как оно работает. А здесь можно посмотреть официальный туториал.