скрипт слежения камеры за игроком unity 2d

Про создание платформера на Unity. Часть вторая, звездная

Я, как и обещал, продолжаю делиться с вами знаниями, приобретенными в процессе освоения 2D-режима Unity. От начинающего, так сказать, начинающим. Систематизирую, улучшаю и прогрессирую вместе с вами. Сегодня мы добавим к содержимому первой статьи управление камерой, сбор бонусов и первый способ умереть в игре. Если вам, как и мне, не терпится приступить, то добро пожаловать под кат.

И да, гифок там еще больше, чем в прошлый раз.

скрипт слежения камеры за игроком unity 2d. image loader. скрипт слежения камеры за игроком unity 2d фото. скрипт слежения камеры за игроком unity 2d-image loader. картинка скрипт слежения камеры за игроком unity 2d. картинка image loader. Я, как и обещал, продолжаю делиться с вами знаниями, приобретенными в процессе освоения 2D-режима Unity. От начинающего, так сказать, начинающим. Систематизирую, улучшаю и прогрессирую вместе с вами. Сегодня мы добавим к содержимому первой статьи управление камерой, сбор бонусов и первый способ умереть в игре. Если вам, как и мне, не терпится приступить, то добро пожаловать под кат.

Чтобы камера во время игры не стояла статично, а плавно двигалась за персонажем, используем заранее подготовленный скрипт. Все по-прежнему просто: берем его и перетаскиваем, но уже на камеру.

скрипт слежения камеры за игроком unity 2d. image loader. скрипт слежения камеры за игроком unity 2d фото. скрипт слежения камеры за игроком unity 2d-image loader. картинка скрипт слежения камеры за игроком unity 2d. картинка image loader. Я, как и обещал, продолжаю делиться с вами знаниями, приобретенными в процессе освоения 2D-режима Unity. От начинающего, так сказать, начинающим. Систематизирую, улучшаю и прогрессирую вместе с вами. Сегодня мы добавим к содержимому первой статьи управление камерой, сбор бонусов и первый способ умереть в игре. Если вам, как и мне, не терпится приступить, то добро пожаловать под кат.

Сам скрипт очень короткий и выглядит вот так:

Main camera, на которую повешен этот скрипт, следует за объектом, который указан у него (скрипта) в публичной переменной target. К слову — все публичные переменные в скриптах можно изменять прямо из редактора Unity. В нашем случае укажем на храброго носатого героя, запустим игру и проверим.

скрипт слежения камеры за игроком unity 2d. image loader. скрипт слежения камеры за игроком unity 2d фото. скрипт слежения камеры за игроком unity 2d-image loader. картинка скрипт слежения камеры за игроком unity 2d. картинка image loader. Я, как и обещал, продолжаю делиться с вами знаниями, приобретенными в процессе освоения 2D-режима Unity. От начинающего, так сказать, начинающим. Систематизирую, улучшаю и прогрессирую вместе с вами. Сегодня мы добавим к содержимому первой статьи управление камерой, сбор бонусов и первый способ умереть в игре. Если вам, как и мне, не терпится приступить, то добро пожаловать под кат.

Теперь можно сделать префаб из платформы (помните как? если нет, смотрите первую статью) и раскидать их по сцене произвольным образом. В моем случае, выглядеть это все будет примерно так:

скрипт слежения камеры за игроком unity 2d. image loader. скрипт слежения камеры за игроком unity 2d фото. скрипт слежения камеры за игроком unity 2d-image loader. картинка скрипт слежения камеры за игроком unity 2d. картинка image loader. Я, как и обещал, продолжаю делиться с вами знаниями, приобретенными в процессе освоения 2D-режима Unity. От начинающего, так сказать, начинающим. Систематизирую, улучшаю и прогрессирую вместе с вами. Сегодня мы добавим к содержимому первой статьи управление камерой, сбор бонусов и первый способ умереть в игре. Если вам, как и мне, не терпится приступить, то добро пожаловать под кат.

Прогуляемся по уровню. Прыжок, еще прыжок… Неудачное движение и герой падает в яму и не собирается возвращаться назад. Как нам с этим бороться? Да легко! Основная идея в том, что в пустоте под платформами будут расположены невидимые объекты, при пересечении которых можно будет загрузить уровень заново или вернуть персонажа назад с, допустим, минус одной жизнь. Для этого нам понадобятся пустой объект, которому добавим Box Collider (вытянутый по горизонтали) и поставим на нем в инспекторе галку Is trigger. Триггер в Unity отличается от простого коллайдера тем, что он не является препятствием, но при пересечении с объектом может вызвать какое-то событие. Объект переименуем в dieCollider и напишем немного кода для обработки падения. Вот вам гифка по случаю такого длинного абзаца:

скрипт слежения камеры за игроком unity 2d. image loader. скрипт слежения камеры за игроком unity 2d фото. скрипт слежения камеры за игроком unity 2d-image loader. картинка скрипт слежения камеры за игроком unity 2d. картинка image loader. Я, как и обещал, продолжаю делиться с вами знаниями, приобретенными в процессе освоения 2D-режима Unity. От начинающего, так сказать, начинающим. Систематизирую, улучшаю и прогрессирую вместе с вами. Сегодня мы добавим к содержимому первой статьи управление камерой, сбор бонусов и первый способ умереть в игре. Если вам, как и мне, не терпится приступить, то добро пожаловать под кат.

Как можно быстрее найдем во вкладке Assets и, после двойного клика, впервые познакомимся с MonoDevelop в рамках этой серии уроков.

скрипт слежения камеры за игроком unity 2d. image loader. скрипт слежения камеры за игроком unity 2d фото. скрипт слежения камеры за игроком unity 2d-image loader. картинка скрипт слежения камеры за игроком unity 2d. картинка image loader. Я, как и обещал, продолжаю делиться с вами знаниями, приобретенными в процессе освоения 2D-режима Unity. От начинающего, так сказать, начинающим. Систематизирую, улучшаю и прогрессирую вместе с вами. Сегодня мы добавим к содержимому первой статьи управление камерой, сбор бонусов и первый способ умереть в игре. Если вам, как и мне, не терпится приступить, то добро пожаловать под кат.

Для обработки пересечения с триггером используется функция OnTriggerEnter2D. Для простого коллайдера аналогично OnCollisionEnter2D.
Добавим следующий код:

Как видите, все логично. Если имя объекта, с которым мы столкнулись, совпадает со строкой «dieCollider», то перезагружаем уровень вполне очевидным методом — загружаем еще раз уровень, который уже загружен.
Теперь можно упасть в яму и…

скрипт слежения камеры за игроком unity 2d. image loader. скрипт слежения камеры за игроком unity 2d фото. скрипт слежения камеры за игроком unity 2d-image loader. картинка скрипт слежения камеры за игроком unity 2d. картинка image loader. Я, как и обещал, продолжаю делиться с вами знаниями, приобретенными в процессе освоения 2D-режима Unity. От начинающего, так сказать, начинающим. Систематизирую, улучшаю и прогрессирую вместе с вами. Сегодня мы добавим к содержимому первой статьи управление камерой, сбор бонусов и первый способ умереть в игре. Если вам, как и мне, не терпится приступить, то добро пожаловать под кат.

Отлично, персонаж возвращается на стартовую позицию. Сделаем префаб из dieCollider’а, расставим его копии во всех опасных местах и осмотримся: чего-то явно не хватает. Конечно, бонусов, которые можно собирать! Принцип их создания абсолютно аналогичен созданию областей, которые возвращают нас назад. Мы будем снова использовать триггеры, только теперь будем сталкиваться не с невидимым объектом, а со вполне конкретной звездой. Работает это так:

скрипт слежения камеры за игроком unity 2d. image loader. скрипт слежения камеры за игроком unity 2d фото. скрипт слежения камеры за игроком unity 2d-image loader. картинка скрипт слежения камеры за игроком unity 2d. картинка image loader. Я, как и обещал, продолжаю делиться с вами знаниями, приобретенными в процессе освоения 2D-режима Unity. От начинающего, так сказать, начинающим. Систематизирую, улучшаю и прогрессирую вместе с вами. Сегодня мы добавим к содержимому первой статьи управление камерой, сбор бонусов и первый способ умереть в игре. Если вам, как и мне, не терпится приступить, то добро пожаловать под кат.

Теперь вернемся в MonoDevelop и напишем немного кода. Объявим float переменную score (которую на первое время можно сделать публичной, чтобы следить за результатом в процессе создания игры) и добавим следующий код в функцию OnTriggerEnter2D

Он выполняет две простые функции — увеличивает результат на единицу и уничтожает объект, с которым мы столкнулись (в данном случае звезду). Так как из бонуса мы уже сделали префаб, раскидаем немного по уровню и посмотрим что будет, если их собирать. Обратите внимание на переменную score в правом нижнем углу экрана.

скрипт слежения камеры за игроком unity 2d. image loader. скрипт слежения камеры за игроком unity 2d фото. скрипт слежения камеры за игроком unity 2d-image loader. картинка скрипт слежения камеры за игроком unity 2d. картинка image loader. Я, как и обещал, продолжаю делиться с вами знаниями, приобретенными в процессе освоения 2D-режима Unity. От начинающего, так сказать, начинающим. Систематизирую, улучшаю и прогрессирую вместе с вами. Сегодня мы добавим к содержимому первой статьи управление камерой, сбор бонусов и первый способ умереть в игре. Если вам, как и мне, не терпится приступить, то добро пожаловать под кат.

Теперь давайте научимся отображать результат на экране, ведь никто не хочет играть в игру прямо в редакторе и смотреть где-то сбоку количество собранных звезд. В этом нам поможет функция OnGUI(), которая прекрасно умеет отрисовывать на экране текстовые блоки, кнопки и прочие полезные вещи.

Проще некуда. Прямо на ДжиЮАе рисуется квадрат с координатой левого верхнего угла (0,0) и размерами 100×100. В нем выводится текст, прямо говорящий нам о количестве собранных звездочек.

скрипт слежения камеры за игроком unity 2d. image loader. скрипт слежения камеры за игроком unity 2d фото. скрипт слежения камеры за игроком unity 2d-image loader. картинка скрипт слежения камеры за игроком unity 2d. картинка image loader. Я, как и обещал, продолжаю делиться с вами знаниями, приобретенными в процессе освоения 2D-режима Unity. От начинающего, так сказать, начинающим. Систематизирую, улучшаю и прогрессирую вместе с вами. Сегодня мы добавим к содержимому первой статьи управление камерой, сбор бонусов и первый способ умереть в игре. Если вам, как и мне, не терпится приступить, то добро пожаловать под кат.

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

И да: напомню, что прямо сейчас проходит конкурс разработчиков игр, в котором можно принять участие и получить Xbox One или Lumia 930!

Источник

Создание эффекта плавной камеры, следующей за объектом — краткий туториал Статьи редакции

Поэтапное описание реализации эффекта с примером кода.

Пользователь Reddit под ником Awsomelity опубликовал короткий туториал для Unity, в котором показал, как сделать камеру, плавно следующую за объектом. Автор представил код, а также подробно показал все этапа реализации этого эффекта.

На сцене вам понадобится лишь несколько объектов: направленный свет, плоскость, предмет и камера. Сперва нужно создать скрипт.

Затем прикрепите скрипт к камере и откройте его. В этом окне удалите ненужную часть кода.

Затем вам нужно добавить переменную «object» — это объект, за которым следует камера, а также переменную «distanceFromObject» — дистанция камеры относительно объекта. Для этого добавьте следующий код:

Затем нужно добавить функцию «LateUpdate».

Пора добавлять новые переменные: «positionToGo» — переменная, которая указывает на какую позицию переместится камера, «smoothPosition» определяет, насколько плавным будет перемещаться камера. Показатель «t:0.125F» определяет скорость движения камеры — вы можете замедлить или ускорить её, меняя значение. Пример кода:

Затем перетащите камеру, чтобы установить её базовое положение относительно объекта. Когда вы сделаете это, перенесите значение в поле «Distance From Object», которое находится в окне Inspector.

На этом этапе эффект плавной камеры выглядит вот так:

Но это пока не финальная версия эффекта. Теперь нужно сделать так, чтобы камера поворачивалась за объектом. Для этого достаточно всего одной строчки кода:

Вот так выглядит финальная версия эффекта:

Даже по последней гифке видно, что камера нифига не плавно поворачивает.

Автору стоит почитать и понять то как работает lerp, в его варианте каждый вызов ф-ии LateUpdate будет перемещать камеру на 12.5% от требуемого смещения. И чем дальше и быстрее обьект будет удаляться от камеры тем более вырвиглазно это будет выглядеть.

К тому же, константное значение dt в лерпе делает его fps-независимым => на разных fps, результат будет выглядеть по разному.

Источник

Продолжаем делать наш Unity for dummies платформер.

Полные версии кода будут находиться в конце поста.

Если вы не в курсе, как работают хуки жизненного цикла в Unity, вы можете ознакомиться с данной статьёй.

Создаём в панели ассетов C# cкрипт PlayerBehaviour, и запихиваем его в папку Scripts (её можно создать в той же панели ассетов).

Затем выбираем наш объект Player слева, в меню иерархии, и закрепляем инспектор (меню справа), нажав на замок в верхнем правом углу.

Пока закрываем все ненужные компоненты (Box Collider 2D, etc), нажимая на стрелочку у каждого из них.

Теперь перетаскиваем наш скрипт в инспектор, и он прикрепляется к объекту Player (если вы не выполнили предыдщуий пункт с закрепением меню, то вы этого сделать не сможете).

Если зайти в Edit => Project Settings => Input Manager, то мы можём увидеть настройки управления. Например, прыжок (Jump) назначен на пробел, в то время, как движение по горизонтали назначено на a, d, ←,→.

Запомним это для того, чтобы затем использовать в коде (названия инпутов Jump, Horizontal).

Пора покодить. Два раза нажимаем на наш скрипт PlayerBehaviour, и Unity отдаст его в руки Visual Studio.

Сохраняем файл, и переходим обратно в Unity. После того, как Unity проверит код (линтинг, ошибки, пустые переменные). Если что то неправильно, то вы увидите сообщение об ошибке.

Исправляем код, и страшные красные буквы исчезают. Можно запустить игру, и проверить, как все работает.

Мне не нравится, что персонажа переворачивает. Исправим.

Заходим в инспектор, открываем Rigidbody2D и ставим галочку на Freeze Rotation Z.

Есть два основных способа научить камеру двигаться за персонажем.

1. Подвинуть камеру внутри сцены, чтобы она была на персонаже, а затем в привязать камеру к объекту персонажа через меню иерархии.

2. Задать движение камеры за персонажем програмно.

Создаём скрипт CameraBehaviour, и привязываем его к объекту Main Camera (добавляем через инспектор).

Открываем наш новый скрипт, и начинаем кодить (да, мне на работе не хватает, продолжаю и после).

Фиксируем объект камеры на замок в инспекторе, и перетаскиваем наш объект Player в GameObject.

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

Однако камера постоянно вылезает за пределы уровня, показывая синий фон.

Я не уверен, что моё решение правильное. Буду рад, если кто-нибудь поделится своими соображениями на данный счёт.

Добавляем в наш скрипт CameraBehaviour следующий код:

Двигаем камеру, и снимаем наши измерения ее положений.

На скрине ниже камера стоит в левом нижнем углу сцены.

Проставляем снятые позиции для камеры (мои и ваши позиции будут отличаться).

Теперь обновим метод UpdateCameraPosition в скрипте CameraBehaviour

Отлично, камера перестала «гулять». Работаем дальше.

Выбираем наш Foreground, и создаём новый слой ‘Ground’ в инспекторе.

Снова тыкаем на Foreground, и выбираем в поле Layer наш только что созданный слой.

Добавим в PlayerBehaviour такую строчку.

Теперь в объекте Player мы можем выбрать наш свежесозданный слой.

Обновляем наш PlayerBehaviour. Добавим коллайдер (rigidBody мы создавали ранее).

Теперь мы можем обновить обработку перемещения персонажа в методе updatePlayerPosition

Летать мы разучились, а по платформе больше не скользим. Победа!

Я не уверен, что моё решение правильное. Буду рад, если кто-нибудь поделится своими соображениями на данный счёт

Привет.
Я, конечно, дохуя вовремя, когда у тебя уже пять статей и рефакторинг, но вот щас иду за тобой пока вот на этом месте.
Короче, в ассет-сторе есть проект 2D Game Kit от разрабов движка. Там движение камеры сделано буквально следующим образом, если помню (давно открывал). Уровень завёрнут в коллайдер, ещё один коллайдер на камере. Соответственно, когда она о него стукается, то расслабляется и не двигается. И ещё там угарный камера-лаг стоит, чтоб камера не жёстко следовала за персонажем, а как бы за верёвочку.

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

Источник

Движение камеры вслед за персонажем в 2d платформере

Есть скрипт движения камеры вслед за объектом и скрипт движения самого объекта.

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Движение камеры вслед за объектом
Ребята привет. Есть скрипт движения камеры с помощью мышки по X Y Z + вращение, прям как в.

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

Движение камеры
Есть сцена, есть пару кнопок и обьекты. Помогите написать код на движение вперед и назад! Вот.

Добавлено через 1 час 0 минут
Как мне подсказали, нужно было в самом спрайте вместо компонента UI использовать 2D Sprite

«transform.position = new Vector3(target.transform.position.x, target.transform.position.y, target.transform.position.z);»

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Движение камеры
Добрый вечер! Подскажите как лучше сделать. Я делаю инициализацию разных объектов в позиции.

Движение до края камеры
Добрый день! Такая проблема как проверить прикосновение к левому и правому краю камеры. Если объект.

Движение камеры мышкой
Хочу сделать управление камерой как в шутерах, но что то не так. У меня камера при движени мышкой.

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

Источник

unity3diy / unity 2d camera follow

This comment has been minimized.

Copy link Quote reply

NickDeGrood commented May 24, 2018

Is there a way to increase the follow speed? The object I’m tracking is following too fast, and the camera can’t keep up with it.

This comment has been minimized.

Copy link Quote reply

Theo-Farnole commented May 31, 2018

NickDeGrood try to replace «FixedUpdate» by «Update», answer if it worked 😉

This comment has been minimized.

Copy link Quote reply

jeremyroelfs commented Jun 28, 2018 •

Lortedo29 is incorrect for the camera movement, but correct in the respect that if you are not applying physics then you should be using Update instead of FixedUpdate.

@NickDeGrood
create a public float speed = 15f; at the top
then replace
interpVelocity = targetDirection.magnitude * 5f;
with
interpVelocity = targetDirection.magnitude * speed;

EDIT:
Here is another gist of this. cleaned up, added speed, changed to update, fixed offset

This comment has been minimized.

Copy link Quote reply

etzl commented Nov 30, 2018

This have a bug or didn’t work for me and i think bug is where it says: targetPos + offset and i have a solution:

this can replace with all lines above Lerp function.

This comment has been minimized.

Copy link Quote reply

nicmar commented Jan 17, 2019

Nice, but minDistance isn’t used? 🙂 I’m trying to make it predict where the player is going.. but not sure if minDistance is for that 🙂

This comment has been minimized.

Copy link Quote reply

spikerton3000 commented Aug 13, 2021

thanks, this works great!

This comment has been minimized.

Copy link Quote reply

Aquatiks commented Aug 22, 2021

TYSMMM ive been on this for like 10 hours

This comment has been minimized.

Copy link Quote reply

fatmaAbdelaal commented Sep 12, 2021

that saved me a LOT
thanks man, awesome work

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *