No video

Как сделать границы камеры - Unity Легко

В этом видео я покажу, как реализовать границы камеры таким образом, чтоб она не выходила за пределы рамок, которые я укажу в Unity.
• Как сделать движение к... - видео слежения камеры
Номер карты для поддержки - 4149629398195479
/ graphicaldesignua - мой патреон для поддержки)
t.me/joinchat/K3HCV0nUjP4X7kC... - телеграм канал в котором можете пообщаться с другими разработчиками.
unity.com/ru - ссылка на Unity

Пікірлер: 63

  • @karpa2895
    @karpa28954 жыл бұрын

    Как раз этого давно не хватало, в каком то смысле уникальный ролик подобных я не встречал.Удаче и спасибо за канал с видео-архивами по c# !

  • @roxydevil1
    @roxydevil14 жыл бұрын

    Супер понятно и просто все объясняешь, что большая редкость в русскоязычном ютубе

  • @zeroks6067
    @zeroks60674 жыл бұрын

    Спасибо за видео, давно уже ищу как это сделать!

  • @thewizard2024
    @thewizard20244 жыл бұрын

    Как всегда топ👍 Спасибо тебе большое

  • @AkimotoTaikiChan
    @AkimotoTaikiChan4 жыл бұрын

    Большое спасибо за это видео как раз искал !!!!

  • @sailaostudio3133
    @sailaostudio31334 жыл бұрын

    Благодарю за твои старание

  • @hummylisii8237
    @hummylisii82374 жыл бұрын

    Супер отличное видео ,то что я простл.Спасибо за отзывчивость,ты лучший,спасибо тебе)))

  • @v1ad_edson
    @v1ad_edson4 жыл бұрын

    Как всегда, очень полезно. Мерси.

  • @edisonsyoutube9808
    @edisonsyoutube98082 жыл бұрын

    ЛУЧШИЙ ГАЙД, СПАСИБО!!!

  • @armm6437
    @armm6437 Жыл бұрын

    Спасибо! Очень полезно. Чтобы убрать лишний код можно еще так [SerializeField] float leftLimit, rightLimit, bottomLimit, upperLimit;

  • @user-xf1iz6om1x
    @user-xf1iz6om1x4 жыл бұрын

    Круто, надо было давно уже заснять это видео. Покажи потом, как сделать рандомную генерацию данжа, типа как в игре SoulKnight

  • @4i4inda
    @4i4inda Жыл бұрын

    Cinemachine: просто существует

  • @fishfishing3058
    @fishfishing30584 жыл бұрын

    Привет, я очень люблю тебя смотреть, скажи пожалуйста, у меня есть спрайты персонажа (все) и я хочу сделать так что бы он при нажатии на кнопки ходил, а когда отпускал включал анимацию поворота в ту сторону, создаю игру с видом сверху

  • @piijjen
    @piijjen4 жыл бұрын

    Как всегда - максимально полезно и без порожняка. Можно нескромный вопрос - как сделать рандомно разлетающиеся предметы из одной точки. Или рандомно падающие предметы. Как из одной точки так и в разных местах уровня? Спасибо.

  • @user-tz6fh4kq9t
    @user-tz6fh4kq9t4 жыл бұрын

    Ура!

  • @kankprodkilla
    @kankprodkilla4 жыл бұрын

    Здраствуйте, могли бы вы показать как сделать систему стройки техники как у робокрафта?

  • @varan9412
    @varan94124 жыл бұрын

    проще использовать Cinemachine и никаких скриптов не нужно намного гибче настройки следования за персом, границ и тряски камеры + отдельно коллайдером выставляешь зоны за которые камера не будет попадать для границ на уровне

  • @mebuckee
    @mebuckee4 жыл бұрын

    Видео прикольное, но ждал его долго... Всё делается через один плагин "Cinemachine". Он вроде с 2017 или 2018 встроен в Unity и его можно найти в Package Manager.

  • @SorrowDetail

    @SorrowDetail

    3 жыл бұрын

    у меня через него персонаж неадекватно начинает себя вести. появляются эти двойные прыжки и камера так же не ограничивается коллайдерами.

  • @fetral7006
    @fetral70063 жыл бұрын

    Такая ситуация: Есть комната в которой определённые координаты для ограничений, при переходе дальше меняю точки координат через скрипт и исчезает персонаж, с чем это может быть связано?

  • @maksimsazanovich6087
    @maksimsazanovich6087 Жыл бұрын

    вопрос, а не лучше было бы сделать это через cinemachine?

  • @SpaceB
    @SpaceB2 жыл бұрын

    Привет, а если у меня камера двигается не за персонажом, а за движениями мышки или тапами по экрану? Я добавил твой код в конце кода для движения камеры, но камера всеравно выходит на те кординаты, которые я ввёл ( Помоги пожалуйста Вот код: using UnityEngine; [DisallowMultipleComponent, RequireComponent(typeof(Camera))] public sealed class CameraControl : MonoBehaviour { [Range(0, 10f)] public float moveSpeed = 10f; [Range(0f, 5f)] public float sensitivity = 3; public bool isDragging { get; private set; } public new Camera camera { get; private set; } private Vector2 tempCenter, targetDirection, tempMousePos; private float tempSens; private void Start() { this.camera = GetComponent(); } private void Update() { UpdateInput(); UpdatePosition(); } [SerializeField] public float LeftLimit; [SerializeField] public float RightLimit; [SerializeField] public float BottomLimit; [SerializeField] public float UppertLimit; private void UpdateInput() { Vector2 mousePosition = Input.mousePosition; if (Input.GetMouseButtonDown(0)) OnPointDown(mousePosition); else if (Input.GetMouseButtonUp(0)) OnPointUp(mousePosition); else if (Input.GetMouseButton(0)) OnPointMove(mousePosition); } private void UpdatePosition() { float speed = Time.deltaTime * this.moveSpeed; if (this.isDragging) this.tempSens = this.sensitivity; else this.tempSens = Mathf.Lerp(this.tempSens, 0f, speed); Vector2 newPosition = this.position + this.targetDirection * this.tempSens; this.position = Vector2.Lerp(this.position, newPosition, speed); } private void OnPointDown(Vector2 mousePosition) { this.tempCenter = GetWorldPoint(mousePosition); this.targetDirection = Vector2.zero; this.tempMousePos = mousePosition; this.isDragging = true; } private void OnPointMove(Vector2 mousePosition) { if (this.isDragging) { Vector2 point = GetWorldPoint(mousePosition); float sqrDist = (this.tempCenter - point).sqrMagnitude; if (sqrDist > 0.1f) { this.targetDirection = (this.tempMousePos - mousePosition).normalized; this.tempMousePos = mousePosition; } } } private void OnPointUp(Vector2 mousePosition) { this.isDragging = false; } public Vector2 position { get { return this.transform.position;} set { this.transform.position = new Vector3(value.x, value.y, -10f); } } private Vector2 GetWorldPoint(Vector2 mousePosition) { Vector2 point = Vector2.zero; Ray ray = this.camera.ScreenPointToRay(mousePosition); Vector3 normal = Vector3.forward; Vector3 position = Vector3.zero; Plane plane = new Plane(normal, position); float distance; plane.Raycast(ray, out distance); point = ray.GetPoint(distance); return point; transform.position = new Vector3(Mathf.Clamp(transform.position.x, LeftLimit, RightLimit), Mathf.Clamp(transform.position.y, BottomLimit, UppertLimit), transform.position.z); } }

  • @Vanat01
    @Vanat01 Жыл бұрын

    А как это сделать В 3D По сути я прописал всё тоже самое но только с методом rotation И он высвечивает ошибку "не удается неявно преобразовать тип unityengine.vector3 на unityengine.quaternion"

  • @I.G.R
    @I.G.R4 жыл бұрын

    Кто-то подскажет, почему не работает скрипт вместе с Cinemachine? Ни на меин камере, ни на виртуальной.

  • @Shanize1
    @Shanize13 жыл бұрын

    Всё получилось но у меня Unity говорит то что строки "transform.position.z" это ошибка что делать? Я просто не могу запустить проект, если кто знает как это исправить помогите пожалуйста

  • @alisasoloviova4661
    @alisasoloviova46614 жыл бұрын

    Привет! Спасибо за видео! У меня вопрос. Когда я делаю сцену в обычно режиме у меня все отлично работает, а когда перехожу в режим игры и включаю полный экран, все идёт не по плану... Либо становятся видны границы, либо камера слишком близко приближается к игроку, либо же совсем не находится в том фокусе, который изначально был выставлен. Настройки я сохраняю, все ок) просто мне интересно, когда я сделаю билд и включу его на компе, оно будет так же как в полноэкранном режиме в юнити, или так, как было настроено на сцене... Меня терзает этот вопрос, было пересмотрено 100500 туториалов, но нигде ничего дельного по этому поводу... Спасибо

  • @graphicaldesign2776

    @graphicaldesign2776

    4 жыл бұрын

    Нужно только пробовать забилдить, чтоб узнать ответ.

  • @nightvideos

    @nightvideos

    2 жыл бұрын

    я не знаю нужно тебе это или нет сейчас, и таже ли у тебя проблема что и у меня, но просто поменяй в Mathf.Clamp (в первом условии) left и right местами. Для верха/низа так же.

  • @tr1ngle
    @tr1ngle4 жыл бұрын

    Выдаёт две ошибки: CS1061 "GameObject[]" не содержит определения для "transform", и не удалось найти доступный метод расширения "transform", принимающий тип "GameObject[]" в качестве первого аргумента (возможно, пропущенна директива using или ссылка на сборку). CS7036 Отсутствует агрумент, соответствующий требуемому формальному параметру "t" из "Vector3.Lerp(Vector3, Vector3, float)". P.S. Я убрал dumping и time.deltatime потомучто оно мне не нужно. P.S.S. Вернул только time.deltatime и пофиксил вторую ошибку CS7036

  • @drakoronus
    @drakoronus4 жыл бұрын

    А можно ли в каком-то определённом месте отменить такие границы? Например, когда герою необходимо упасть вниз по сюжету или взобраться наверх?

  • @graphicaldesign2776

    @graphicaldesign2776

    4 жыл бұрын

    Ох, теоретически, да. Но много условий будет.

  • @3DGD

    @3DGD

    Жыл бұрын

    наверно уже поздно, но вдруг кому то еще пригодиться, ставим скрипт ограничения камеры на пустой объект и когда надо просто отключаем пустой объект, тогда скрипт перестанет работать. 2 способ) Через другой код делаем метод If Else и к примеру если игрок вошел в триггер то обращаемся к скрипту который надо отключить и отключаем. Этот способ я не проверял так что не могу гарантировать что он работает. Есть наверняка еще много способов.(сразу скажу на требования по типу: "отправь готовый скрипт или кусочек" я не буду реагировать, могу дать ссылки для ознакомления с какой-либой частью кода.

  • @lkghost7
    @lkghost7 Жыл бұрын

    а что будет если в игре будет другое разрешение ?)

  • @zeroks6067
    @zeroks60674 жыл бұрын

    СЛУШАЙ, ПОКАЖИ ПОЖАЛУЙСТА В СЛЕДУЮЩЕМ ВИДЕО, КАК ПОДБИРАТЬ ПРЕДМЕТЫ С ПОМОЩЬЮ СЕНСОРНОЙ КНОПКИ в 2D!!! УМОЛЯЮ 🙏

  • @quantdev

    @quantdev

    4 жыл бұрын

    через mouse комманды оно компилируется под сенсор

  • @s.a.studio3069

    @s.a.studio3069

    4 жыл бұрын

    Вешаешь на кнопку EventTrigger делаешь метод подбора public и из manager-а выбираешь mouse down , объект в котором скрипт подбора , скрипт и в нем метод подбора.

  • @hummylisii8237
    @hummylisii82374 жыл бұрын

    Все круто,а как сделать так чтобы эти ограничители были хаотичны по уровню ,например сначала идет прямо а потом спустя нембольшое время есть такой карман небольшой где камера может двигатся туда но в кармане всеравно будет ограничитель.Вообщем хаотичное ограничение.

  • @graphicaldesign2776

    @graphicaldesign2776

    4 жыл бұрын

    Тут можно считать координаты. Когда камеры выходит за определенные точки, ограничения меняются

  • @hummylisii8237

    @hummylisii8237

    4 жыл бұрын

    @@graphicaldesign2776 спасибо за ответ только я врятле догадаюсь как это сделать)))Сможешь выпустить продолжение где раскажешь как это делать)

  • @Sidorovoch
    @Sidorovoch4 жыл бұрын

    А как сделать так что бы не центр камеры не мог двигаться дальше границы, а границы камеры упирались и камера дальше не двигалась.

  • @graphicaldesign2776

    @graphicaldesign2776

    4 жыл бұрын

    Так в этом видео я и показал как это сделать.

  • @bilalmagomedov3295
    @bilalmagomedov32954 жыл бұрын

    А как сделать 2д катсцену? И его активатор?

  • @graphicaldesign2776

    @graphicaldesign2776

    4 жыл бұрын

    Пачка условий и триггер,

  • @dgonicoks1775
    @dgonicoks17753 жыл бұрын

    эээээм а если изменится разрешение экрана то эти рамки разве не слетят?

  • @lllraytoxlll

    @lllraytoxlll

    3 жыл бұрын

    слетят, но все молчат об этом. Ломаю голову уже месяц над этим вопросом. Даже бокс коллайдеры поставил, и поймал размеры коллайдера для камеры при разном разрешении. Но если камера входит во внешние коллайдеры немного, то она обратно отскочит, а вот если больше чем на половину, то так и останется в этих коллайдерах. Может ты уже нашел ответ?

  • @printifyprint
    @printifyprint3 жыл бұрын

    Здравствуйте не получается реализовать для 3д игры, может кто подскажет ?

  • @FaHToM_Kpuk

    @FaHToM_Kpuk

    3 жыл бұрын

    всм а что тебе там надо? если хочешь чтобы камера не кружилась поставь ограничители поворота и все

  • @xSPESHERx
    @xSPESHERx Жыл бұрын

    Есть еще один способ. Через синемашин и полигон коллайдер 2д. Там даже код писать не нужно.

  • @Alex113mm
    @Alex113mm2 жыл бұрын

    чтобы определять не центр камеры а край, и адаптировать код под любое разрешение экрана нужно заменить на это: transform.position = new Vector3 ( Mathf.Clamp(transform.position.x, leftLimit.transform.position.x+ _xOfsetClamp , rightLimit.transform.position.x- _xOfsetClamp), Mathf.Clamp(transform.position.y, downLimit.transform.position.y+ _yOfsetClamp, upLimit.transform.position.y- _yOfsetClamp ), transform.position.z ); и в старте вызывать метод: public void SetScreenClampOfset() { var min = gameObject.GetComponent().ViewportToWorldPoint(new Vector2(0, 0)); var max = gameObject.GetComponent().ViewportToWorldPoint(new Vector2(0.5f, 0.5f)); _xOfsetClamp = max.x - min.x; _yOfsetClamp = max.y - min.y; }

  • @user-od1pc9hd9s

    @user-od1pc9hd9s

    2 жыл бұрын

    _xOfsetClamp _yOfsetClamp это что за переменные

  • @TV-TAB
    @TV-TAB3 жыл бұрын

    Господи, а как сделать тоже самое если камера умеет приближать???? такой метод не подходит

  • @LYONID

    @LYONID

    3 жыл бұрын

    бро, нашёл способ?

  • @tyvffghgh6154
    @tyvffghgh61548 ай бұрын

    было бы интересно увидеть обзор на мужское женское от вас

  • @jjcosmio2225
    @jjcosmio22254 жыл бұрын

    1)А есть ли на просторах интернета туториалы от а до я.как сделать Subway surfers 2) реально ли выучить с# юнити неграмотному человеку.....будем считать образно

  • @graphicaldesign2776

    @graphicaldesign2776

    4 жыл бұрын

    Друг наш, а смысл? Если за год посмотрело буквально несколько человек. Та и ко всему, даже ты сам не подписан на канал.

  • @jjcosmio2225

    @jjcosmio2225

    4 жыл бұрын

    @@graphicaldesign2776 можно ли делать реплики игр со своей графикой в ГУГЛ ПЛЭЙ?

  • @graphicaldesign2776

    @graphicaldesign2776

    4 жыл бұрын

    @@jjcosmio2225 немного не понял вопрос

  • @jjcosmio2225

    @jjcosmio2225

    4 жыл бұрын

    @@graphicaldesign2776 могу ли я сделать клон игры: subway surfers, flappy bird.такое же управление,но графика другая..Не забанит ли меня Гугл ПЛЭЙ?

  • @graphicaldesign2776

    @graphicaldesign2776

    4 жыл бұрын

    @@jjcosmio2225 если грамотно сделать, то не забанит.