Супер понятно и просто все объясняешь, что большая редкость в русскоязычном ютубе
@karpa28954 жыл бұрын
Как раз этого давно не хватало, в каком то смысле уникальный ролик подобных я не встречал.Удаче и спасибо за канал с видео-архивами по c# !
@zeroks60674 жыл бұрын
Спасибо за видео, давно уже ищу как это сделать!
@thewizard20244 жыл бұрын
Как всегда топ👍 Спасибо тебе большое
@hummylisii82374 жыл бұрын
Супер отличное видео ,то что я простл.Спасибо за отзывчивость,ты лучший,спасибо тебе)))
@sailaostudio31334 жыл бұрын
Благодарю за твои старание
@edisonsyoutube98082 жыл бұрын
ЛУЧШИЙ ГАЙД, СПАСИБО!!!
@armm64372 жыл бұрын
Спасибо! Очень полезно. Чтобы убрать лишний код можно еще так [SerializeField] float leftLimit, rightLimit, bottomLimit, upperLimit;
@v1ad_edson4 жыл бұрын
Как всегда, очень полезно. Мерси.
@4i4inda2 жыл бұрын
Cinemachine: просто существует
@varan94124 жыл бұрын
проще использовать Cinemachine и никаких скриптов не нужно намного гибче настройки следования за персом, границ и тряски камеры + отдельно коллайдером выставляешь зоны за которые камера не будет попадать для границ на уровне
@КонстантинЧигрик-р7м4 жыл бұрын
Круто, надо было давно уже заснять это видео. Покажи потом, как сделать рандомную генерацию данжа, типа как в игре SoulKnight
@КВ-11ДанилоКухта4 жыл бұрын
Ура!
@mebuckee4 жыл бұрын
Видео прикольное, но ждал его долго... Всё делается через один плагин "Cinemachine". Он вроде с 2017 или 2018 встроен в Unity и его можно найти в Package Manager.
@SorrowDetail3 жыл бұрын
у меня через него персонаж неадекватно начинает себя вести. появляются эти двойные прыжки и камера так же не ограничивается коллайдерами.
@fishfishing30584 жыл бұрын
Привет, я очень люблю тебя смотреть, скажи пожалуйста, у меня есть спрайты персонажа (все) и я хочу сделать так что бы он при нажатии на кнопки ходил, а когда отпускал включал анимацию поворота в ту сторону, создаю игру с видом сверху
@maksimsazanovich6087 Жыл бұрын
вопрос, а не лучше было бы сделать это через cinemachine?
@piijjen4 жыл бұрын
Как всегда - максимально полезно и без порожняка. Можно нескромный вопрос - как сделать рандомно разлетающиеся предметы из одной точки. Или рандомно падающие предметы. Как из одной точки так и в разных местах уровня? Спасибо.
@alisasoloviova46614 жыл бұрын
Привет! Спасибо за видео! У меня вопрос. Когда я делаю сцену в обычно режиме у меня все отлично работает, а когда перехожу в режим игры и включаю полный экран, все идёт не по плану... Либо становятся видны границы, либо камера слишком близко приближается к игроку, либо же совсем не находится в том фокусе, который изначально был выставлен. Настройки я сохраняю, все ок) просто мне интересно, когда я сделаю билд и включу его на компе, оно будет так же как в полноэкранном режиме в юнити, или так, как было настроено на сцене... Меня терзает этот вопрос, было пересмотрено 100500 туториалов, но нигде ничего дельного по этому поводу... Спасибо
@graphicaldesign27764 жыл бұрын
Нужно только пробовать забилдить, чтоб узнать ответ.
@nightvideos2 жыл бұрын
я не знаю нужно тебе это или нет сейчас, и таже ли у тебя проблема что и у меня, но просто поменяй в Mathf.Clamp (в первом условии) left и right местами. Для верха/низа так же.
@kankprodkilla4 жыл бұрын
Здраствуйте, могли бы вы показать как сделать систему стройки техники как у робокрафта?
@zeroks60674 жыл бұрын
СЛУШАЙ, ПОКАЖИ ПОЖАЛУЙСТА В СЛЕДУЮЩЕМ ВИДЕО, КАК ПОДБИРАТЬ ПРЕДМЕТЫ С ПОМОЩЬЮ СЕНСОРНОЙ КНОПКИ в 2D!!! УМОЛЯЮ 🙏
@quantdev4 жыл бұрын
через mouse комманды оно компилируется под сенсор
@s.a.studio30694 жыл бұрын
Вешаешь на кнопку EventTrigger делаешь метод подбора public и из manager-а выбираешь mouse down , объект в котором скрипт подбора , скрипт и в нем метод подбора.
@Vanat012 жыл бұрын
А как это сделать В 3D По сути я прописал всё тоже самое но только с методом rotation И он высвечивает ошибку "не удается неявно преобразовать тип unityengine.vector3 на unityengine.quaternion"
@fetral70064 жыл бұрын
Такая ситуация: Есть комната в которой определённые координаты для ограничений, при переходе дальше меняю точки координат через скрипт и исчезает персонаж, с чем это может быть связано?
@drakoronus4 жыл бұрын
А можно ли в каком-то определённом месте отменить такие границы? Например, когда герою необходимо упасть вниз по сюжету или взобраться наверх?
@graphicaldesign27764 жыл бұрын
Ох, теоретически, да. Но много условий будет.
@3DGD Жыл бұрын
наверно уже поздно, но вдруг кому то еще пригодиться, ставим скрипт ограничения камеры на пустой объект и когда надо просто отключаем пустой объект, тогда скрипт перестанет работать. 2 способ) Через другой код делаем метод If Else и к примеру если игрок вошел в триггер то обращаемся к скрипту который надо отключить и отключаем. Этот способ я не проверял так что не могу гарантировать что он работает. Есть наверняка еще много способов.(сразу скажу на требования по типу: "отправь готовый скрипт или кусочек" я не буду реагировать, могу дать ссылки для ознакомления с какой-либой частью кода.
@xSPESHERx2 жыл бұрын
Есть еще один способ. Через синемашин и полигон коллайдер 2д. Там даже код писать не нужно.
@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); } }
@lkghost72 жыл бұрын
а что будет если в игре будет другое разрешение ?)
@hummylisii82374 жыл бұрын
Все круто,а как сделать так чтобы эти ограничители были хаотичны по уровню ,например сначала идет прямо а потом спустя нембольшое время есть такой карман небольшой где камера может двигатся туда но в кармане всеравно будет ограничитель.Вообщем хаотичное ограничение.
@graphicaldesign27764 жыл бұрын
Тут можно считать координаты. Когда камеры выходит за определенные точки, ограничения меняются
@hummylisii82374 жыл бұрын
@@graphicaldesign2776 спасибо за ответ только я врятле догадаюсь как это сделать)))Сможешь выпустить продолжение где раскажешь как это делать)
@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
@I.G.R4 жыл бұрын
Кто-то подскажет, почему не работает скрипт вместе с Cinemachine? Ни на меин камере, ни на виртуальной.
@Shanize14 жыл бұрын
Всё получилось но у меня Unity говорит то что строки "transform.position.z" это ошибка что делать? Я просто не могу запустить проект, если кто знает как это исправить помогите пожалуйста
@Sidorovoch4 жыл бұрын
А как сделать так что бы не центр камеры не мог двигаться дальше границы, а границы камеры упирались и камера дальше не двигалась.
@graphicaldesign27764 жыл бұрын
Так в этом видео я и показал как это сделать.
@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; }
@ЕгорГузовский-т8ю2 жыл бұрын
_xOfsetClamp _yOfsetClamp это что за переменные
@bilalmagomedov32954 жыл бұрын
А как сделать 2д катсцену? И его активатор?
@graphicaldesign27764 жыл бұрын
Пачка условий и триггер,
@TV-TAB3 жыл бұрын
Господи, а как сделать тоже самое если камера умеет приближать???? такой метод не подходит
@LYONID3 жыл бұрын
бро, нашёл способ?
@dgonicoks17754 жыл бұрын
эээээм а если изменится разрешение экрана то эти рамки разве не слетят?
@lllraytoxlll3 жыл бұрын
слетят, но все молчат об этом. Ломаю голову уже месяц над этим вопросом. Даже бокс коллайдеры поставил, и поймал размеры коллайдера для камеры при разном разрешении. Но если камера входит во внешние коллайдеры немного, то она обратно отскочит, а вот если больше чем на половину, то так и останется в этих коллайдерах. Может ты уже нашел ответ?
@printifyprint3 жыл бұрын
Здравствуйте не получается реализовать для 3д игры, может кто подскажет ?
@FaHToM_Kpuk3 жыл бұрын
всм а что тебе там надо? если хочешь чтобы камера не кружилась поставь ограничители поворота и все
@tyvffghgh6154 Жыл бұрын
было бы интересно увидеть обзор на мужское женское от вас
@jjcosmio22254 жыл бұрын
1)А есть ли на просторах интернета туториалы от а до я.как сделать Subway surfers 2) реально ли выучить с# юнити неграмотному человеку.....будем считать образно
@graphicaldesign27764 жыл бұрын
Друг наш, а смысл? Если за год посмотрело буквально несколько человек. Та и ко всему, даже ты сам не подписан на канал.
@jjcosmio22254 жыл бұрын
@@graphicaldesign2776 можно ли делать реплики игр со своей графикой в ГУГЛ ПЛЭЙ?
@graphicaldesign27764 жыл бұрын
@@jjcosmio2225 немного не понял вопрос
@jjcosmio22254 жыл бұрын
@@graphicaldesign2776 могу ли я сделать клон игры: subway surfers, flappy bird.такое же управление,но графика другая..Не забанит ли меня Гугл ПЛЭЙ?
@graphicaldesign27764 жыл бұрын
@@jjcosmio2225 если грамотно сделать, то не забанит.