No video
Как сделать границы камеры - Unity Легко
В этом видео я покажу, как реализовать границы камеры таким образом, чтоб она не выходила за пределы рамок, которые я укажу в Unity.
• Как сделать движение к... - видео слежения камеры
Номер карты для поддержки - 4149629398195479
/ graphicaldesignua - мой патреон для поддержки)
t.me/joinchat/K3HCV0nUjP4X7kC... - телеграм канал в котором можете пообщаться с другими разработчиками.
unity.com/ru - ссылка на Unity
Пікірлер: 63
Как раз этого давно не хватало, в каком то смысле уникальный ролик подобных я не встречал.Удаче и спасибо за канал с видео-архивами по c# !
Супер понятно и просто все объясняешь, что большая редкость в русскоязычном ютубе
Спасибо за видео, давно уже ищу как это сделать!
Как всегда топ👍 Спасибо тебе большое
Большое спасибо за это видео как раз искал !!!!
Благодарю за твои старание
Супер отличное видео ,то что я простл.Спасибо за отзывчивость,ты лучший,спасибо тебе)))
Как всегда, очень полезно. Мерси.
ЛУЧШИЙ ГАЙД, СПАСИБО!!!
Спасибо! Очень полезно. Чтобы убрать лишний код можно еще так [SerializeField] float leftLimit, rightLimit, bottomLimit, upperLimit;
Круто, надо было давно уже заснять это видео. Покажи потом, как сделать рандомную генерацию данжа, типа как в игре SoulKnight
Cinemachine: просто существует
Привет, я очень люблю тебя смотреть, скажи пожалуйста, у меня есть спрайты персонажа (все) и я хочу сделать так что бы он при нажатии на кнопки ходил, а когда отпускал включал анимацию поворота в ту сторону, создаю игру с видом сверху
Как всегда - максимально полезно и без порожняка. Можно нескромный вопрос - как сделать рандомно разлетающиеся предметы из одной точки. Или рандомно падающие предметы. Как из одной точки так и в разных местах уровня? Спасибо.
Ура!
Здраствуйте, могли бы вы показать как сделать систему стройки техники как у робокрафта?
проще использовать Cinemachine и никаких скриптов не нужно намного гибче настройки следования за персом, границ и тряски камеры + отдельно коллайдером выставляешь зоны за которые камера не будет попадать для границ на уровне
Видео прикольное, но ждал его долго... Всё делается через один плагин "Cinemachine". Он вроде с 2017 или 2018 встроен в Unity и его можно найти в Package Manager.
@SorrowDetail
3 жыл бұрын
у меня через него персонаж неадекватно начинает себя вести. появляются эти двойные прыжки и камера так же не ограничивается коллайдерами.
Такая ситуация: Есть комната в которой определённые координаты для ограничений, при переходе дальше меняю точки координат через скрипт и исчезает персонаж, с чем это может быть связано?
вопрос, а не лучше было бы сделать это через cinemachine?
Привет, а если у меня камера двигается не за персонажом, а за движениями мышки или тапами по экрану? Я добавил твой код в конце кода для движения камеры, но камера всеравно выходит на те кординаты, которые я ввёл ( Помоги пожалуйста Вот код: 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); } }
А как это сделать В 3D По сути я прописал всё тоже самое но только с методом rotation И он высвечивает ошибку "не удается неявно преобразовать тип unityengine.vector3 на unityengine.quaternion"
Кто-то подскажет, почему не работает скрипт вместе с Cinemachine? Ни на меин камере, ни на виртуальной.
Всё получилось но у меня Unity говорит то что строки "transform.position.z" это ошибка что делать? Я просто не могу запустить проект, если кто знает как это исправить помогите пожалуйста
Привет! Спасибо за видео! У меня вопрос. Когда я делаю сцену в обычно режиме у меня все отлично работает, а когда перехожу в режим игры и включаю полный экран, все идёт не по плану... Либо становятся видны границы, либо камера слишком близко приближается к игроку, либо же совсем не находится в том фокусе, который изначально был выставлен. Настройки я сохраняю, все ок) просто мне интересно, когда я сделаю билд и включу его на компе, оно будет так же как в полноэкранном режиме в юнити, или так, как было настроено на сцене... Меня терзает этот вопрос, было пересмотрено 100500 туториалов, но нигде ничего дельного по этому поводу... Спасибо
@graphicaldesign2776
4 жыл бұрын
Нужно только пробовать забилдить, чтоб узнать ответ.
@nightvideos
2 жыл бұрын
я не знаю нужно тебе это или нет сейчас, и таже ли у тебя проблема что и у меня, но просто поменяй в Mathf.Clamp (в первом условии) left и right местами. Для верха/низа так же.
Выдаёт две ошибки: CS1061 "GameObject[]" не содержит определения для "transform", и не удалось найти доступный метод расширения "transform", принимающий тип "GameObject[]" в качестве первого аргумента (возможно, пропущенна директива using или ссылка на сборку). CS7036 Отсутствует агрумент, соответствующий требуемому формальному параметру "t" из "Vector3.Lerp(Vector3, Vector3, float)". P.S. Я убрал dumping и time.deltatime потомучто оно мне не нужно. P.S.S. Вернул только time.deltatime и пофиксил вторую ошибку CS7036
А можно ли в каком-то определённом месте отменить такие границы? Например, когда герою необходимо упасть вниз по сюжету или взобраться наверх?
@graphicaldesign2776
4 жыл бұрын
Ох, теоретически, да. Но много условий будет.
@3DGD
Жыл бұрын
наверно уже поздно, но вдруг кому то еще пригодиться, ставим скрипт ограничения камеры на пустой объект и когда надо просто отключаем пустой объект, тогда скрипт перестанет работать. 2 способ) Через другой код делаем метод If Else и к примеру если игрок вошел в триггер то обращаемся к скрипту который надо отключить и отключаем. Этот способ я не проверял так что не могу гарантировать что он работает. Есть наверняка еще много способов.(сразу скажу на требования по типу: "отправь готовый скрипт или кусочек" я не буду реагировать, могу дать ссылки для ознакомления с какой-либой частью кода.
а что будет если в игре будет другое разрешение ?)
СЛУШАЙ, ПОКАЖИ ПОЖАЛУЙСТА В СЛЕДУЮЩЕМ ВИДЕО, КАК ПОДБИРАТЬ ПРЕДМЕТЫ С ПОМОЩЬЮ СЕНСОРНОЙ КНОПКИ в 2D!!! УМОЛЯЮ 🙏
@quantdev
4 жыл бұрын
через mouse комманды оно компилируется под сенсор
@s.a.studio3069
4 жыл бұрын
Вешаешь на кнопку EventTrigger делаешь метод подбора public и из manager-а выбираешь mouse down , объект в котором скрипт подбора , скрипт и в нем метод подбора.
Все круто,а как сделать так чтобы эти ограничители были хаотичны по уровню ,например сначала идет прямо а потом спустя нембольшое время есть такой карман небольшой где камера может двигатся туда но в кармане всеравно будет ограничитель.Вообщем хаотичное ограничение.
@graphicaldesign2776
4 жыл бұрын
Тут можно считать координаты. Когда камеры выходит за определенные точки, ограничения меняются
@hummylisii8237
4 жыл бұрын
@@graphicaldesign2776 спасибо за ответ только я врятле догадаюсь как это сделать)))Сможешь выпустить продолжение где раскажешь как это делать)
А как сделать так что бы не центр камеры не мог двигаться дальше границы, а границы камеры упирались и камера дальше не двигалась.
@graphicaldesign2776
4 жыл бұрын
Так в этом видео я и показал как это сделать.
А как сделать 2д катсцену? И его активатор?
@graphicaldesign2776
4 жыл бұрын
Пачка условий и триггер,
эээээм а если изменится разрешение экрана то эти рамки разве не слетят?
@lllraytoxlll
3 жыл бұрын
слетят, но все молчат об этом. Ломаю голову уже месяц над этим вопросом. Даже бокс коллайдеры поставил, и поймал размеры коллайдера для камеры при разном разрешении. Но если камера входит во внешние коллайдеры немного, то она обратно отскочит, а вот если больше чем на половину, то так и останется в этих коллайдерах. Может ты уже нашел ответ?
Здравствуйте не получается реализовать для 3д игры, может кто подскажет ?
@FaHToM_Kpuk
3 жыл бұрын
всм а что тебе там надо? если хочешь чтобы камера не кружилась поставь ограничители поворота и все
Есть еще один способ. Через синемашин и полигон коллайдер 2д. Там даже код писать не нужно.
чтобы определять не центр камеры а край, и адаптировать код под любое разрешение экрана нужно заменить на это: 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
2 жыл бұрын
_xOfsetClamp _yOfsetClamp это что за переменные
Господи, а как сделать тоже самое если камера умеет приближать???? такой метод не подходит
@LYONID
3 жыл бұрын
бро, нашёл способ?
было бы интересно увидеть обзор на мужское женское от вас
1)А есть ли на просторах интернета туториалы от а до я.как сделать Subway surfers 2) реально ли выучить с# юнити неграмотному человеку.....будем считать образно
@graphicaldesign2776
4 жыл бұрын
Друг наш, а смысл? Если за год посмотрело буквально несколько человек. Та и ко всему, даже ты сам не подписан на канал.
@jjcosmio2225
4 жыл бұрын
@@graphicaldesign2776 можно ли делать реплики игр со своей графикой в ГУГЛ ПЛЭЙ?
@graphicaldesign2776
4 жыл бұрын
@@jjcosmio2225 немного не понял вопрос
@jjcosmio2225
4 жыл бұрын
@@graphicaldesign2776 могу ли я сделать клон игры: subway surfers, flappy bird.такое же управление,но графика другая..Не забанит ли меня Гугл ПЛЭЙ?
@graphicaldesign2776
4 жыл бұрын
@@jjcosmio2225 если грамотно сделать, то не забанит.