Как сделать камеру от первого лица в unity

Добавил пользователь Alex
Обновлено: 18.09.2024

Это можно сделать снятие флажка рядом с компонентом "Камера". Или вы можете отключить их с помощью скрипта. С другой стороны, если вы хотите отобразить их все на экране, вы можете изменить значения x, y, h и w для этого.

Как мне двигаться в единстве?

  1. Щелкните и удерживайте правую кнопку мыши.
  2. Перемещайте обзор с помощью мыши, клавиш WASD для перемещения влево / вправо / вперед / назад и клавиш Q и E для перемещения вверх и вниз.

Как поменять основную камеру?

Что такое основная камера в Unity?

Первый включенный компонент камеры, помеченный тегом "Основная камера"(Только для чтения). Если нет включенного компонента Camera с тегом" MainCamera ", это свойство имеет значение null. Внутри Unity кэширует все GameObject с тегом" MainCamera ". Когда вы обращаетесь к этому свойству, Unity возвращает первый действительный результат из своего кеша.

Сколько кадров в секунду равно единице?

Если ваша игра или приложение работает примерно с 25 кадров в секунду, Unity будет выполнять примерно четыре фиксированных обновления каждый кадр, чтобы время симуляции физики соответствовало текущему времени кадра. См. В глоссарии, где требуется очень высокая точность.

Как вы пишете код в единстве?

Какие слова нельзя использовать от третьего лица?

Что такое камера от третьего лица?

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

Кинематика в единстве?

Если isKinematic включен, силы, столкновения или соединения больше не будут влиять на твердое тело. Жесткое тело будет находиться под полным контролем анимации или скрипта, изменяя преобразование. . Кинематические тела также влияют на движение других жесткие тела через столкновения или соединения.

Для начала предоставим игроку оружие, напоминающее гранатомёт. Назовём его пусковой установкой или лаунчером (launcher). Для этого создадим Javascript, определяющий поведение оружия.
Нам нужно позволить игроку стрелять туда, куда он смотрит (куда направлена камера). Наш персонаж смотрит через камеру, находящуюся на уровне глаз. Если игрок стреляет из оружия, снаряд должен быть запущен оттуда, где расположены руки, а не глаза. Значит, нужно добавить объект, представляющий лаунчер и расположить его в том месте, где предполагаются руки персонажа. Это гарантирует, что выстрел будет происходить из правильной позиции.

Create the weapon launcher

Create the Missile object

Write the Missile Launcher code

  • Вставьте этот код в MissileLauncher.js и сохраните скрипт.
  • Прикрепите (просто перетащите) скрипт MissileLauncher к объекту Launcher в FPC. Скрипт должен появиться в Inspector объекта.
  • Выберите Missile в Project View и добавьте компонент Components→Physics→Rigidbody. Компонент Rigidbody добавлен к ракете. Тип объекта, назначаемого на переменную, должен соответствовать типу переменной.
  • Свяжите ракету с переменной в скрипте. Выберите Launcher в Hierarchy, найтите переменную Projectile в скрипте MissileLauncher в Inspector. Перетащите префаб Missile из Project View на переменную Projectile.
  • Теперь запустите игру. При выстреле будут вылетать сферы, подчиняющиеся гравитации.

Missile explosions

function OnCollisionEnter( collision : Collision )
Любой код, который мы вставим внутрь функции OnCollisionEnter, будет выполнен, когда объект, к которому прикреплён скрипт, столкнётся с другим объектом.
var contact : ContactPoint = collision.contacts[0];
Основная задача функции OnCollisionEnter — вызвать новый взрыв в точке столкновения ракеты. Как определить, где произошло столкновение? Функция OnCollisionEnter работает с классом Colli­sion, который содержит эту информацию. Точка столкновения сохраняется в переменной ContactPoint.
var rotation = Quaternion.FromToRotation( Vector3.up, contact.normal );
var instantiatedExplosion : GameObject = Instantiate( explosion, contact.point, rotation );
Здесь мы используем функцию Instantiate для создания взрыва. Мы знаем, что функция работает с 3 параметрами: (1) объект для вызова, (2) позиция и (3) угол поворота.
Мы назначим объект с системой частиц позже. Использовать для этого мы будем редактор, так что переменную нужно сделать публичной (объявить за границами функций).
Второй параметр определяет точку вызова взрыва, исходя из информации в классе Collision.
Третий параметр, угол поворота взрыва, нуждается в пояснении. Мы хотим повернуть взрыв так, чтобы ось Y взрыва была параллельна нормали (normal) поверхности, с которой столкнулась ракета. Это означает, что для стен взрыв будет направлен наружу, для пола — вверх. Фактически, это перевод локальной оси Y (ось Y направлена вверх) в нормаль поверхности (в мировой системе) объекта, с которым произошло столкновение. То есть, ось Y взрыва поворачивается в том же направлении, в каком повёрнута нормаль поверхности, с которой произошло столкновение.
Destroy( gameObject );
>
Теперь мы ходим заставить ракету исчезнуть из игры после столкновения. Для этого вызываем фукнцию Destroy(), с объектом в качестве параметра (gameObject, как в нашем случае, ссылается на тот объект, к которому прикреплён скрипт).
Вот полный код Projectile.js:
var explosion : GameObject;

Defining Explosion Behavior

  • Вставьте код в скрипт Explosion и удалите функцию Update().
  • Прикрепите скрипт к префабу Explosion.
  • Запустите игру. При столкновении ракеты с окружением, вы увидите взрыв (систему частиц) и её исчезновение через одну секунду.

Sound effects

  • Добавим компонент Audio Source (Component→Audio-> Audio Source) к префабу Explosion. Одно из свойств этого компонента — Audio Clip.
  • Применим аудиоклип /Sound/RocketLauncherImpact к переменной Audio Clip.
  • Запустим игру и пронаблюдаем появление звукового эффекта при взрыве ракеты.

Adding a GUI

Добавим графический интерфейс пользователя (GUI, HUD). Наш простейший GUI будет содержать прицел оружия (crosshair).

Adding a crosshair

function Start()
position = Rect( ( Screen.width - crosshairTexture.width ) / 2, ( Screen.height -crosshairTexture.height ) / 2, crosshairTexture.width, crosshairTexture.height );
>

Physics

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

Bronyskynet Official

Андрей, помню видел игру под Android,вообщем там сначало поворачивалсь камера,за ней фонарик
Вот как это сделать?
Сейчас камера и фонарик поворачиваются одновременно.

Дмитрий Вергасов

Мирослав Довгалюк

public class MouseLook : MonoBehaviour

[SerializeField]
Показать полностью.
float Smoothness = 0.05f; //уровень "плавности"
[SerializeField]
Vector2 Sensitivity = new Vector2(4, 4);
private Vector2 NewCoord;
private Vector2 CurrentCoord;
[SerializeField]
Vector2 Limit = new Vector2(-70, 80); //ограничение камеры
private Vector2 velocity;

Cinemachines

Cinemachines - Это крутой стандартный пакет от юнити, который управляет камерой в вашей игре.

Он может следить за персонажем, работать в катсценах, накладывать эффект дрожания камеры, делать движения камеры плавными, ограничивать ее движения в пространстве, делать "орбитальную" камеру для игры от 3-го лица, от первого лица и многое, многое другое.

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

Как сделать движение камеры за персонажем.

Начнем с самого часто необходимого, конечно, примеры я буду приводить с 2D игрой, так проще и понятнее.

Синемашина работает с "виртуальными" камерами, еще более виртуальными, чем камера в вашем проекте)

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

Теперь пакет установлен и им можно пользоваться.

Находим в меню новый пункт и выбираем 2D Camera.

Создание виртуальной камеры синемашины

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

Настройка синемашины(Cinemachine)

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

Что такое Сinemachine в Unity?

В принципе, камера уже следит за игроком, но ее конечно же, можно настроить как вам угодно.

Как настроить Cinemachine для 2D игры

Жмем на MainCamera, на ней автоматически должен был создаться скрипт CinemachineBrain. И меняем Update method и Blend update method на FixedUpdate.

После этого камера будет адекватно себя вести.

Выбираем нашу ВИРТУАЛЬНУЮ камеру "CM vcam1". Я хочу, что-бы камера обгоняла персонажа при движении и позволяла посмотреть немного вперед себя.

Для этого есть 3 пункта для настройки.

С этими настройками камера обгоняет игрока и дает посмотреть, что там впереди.

Далее идут настройки плавности отслеживания.

плавность

Плавность

Покрутив настройки можно добиться желаемой плавности перемещения камеры. Я оставлю как есть.

смещение

Смещение

Настройки смещения камеры. Позволяет сместить камеру относительно ее положения. А так-же настроить расстояние на котором она будет находиться. В 2D игре расстоянии не заметно, до тех пор пока объекты в зоне видимости камеры.

Что такое Сinemachine в Unity?

Мертвая зона

Далее идет так называемая "мертвая зона", зона в которой камера не будет реагировать на движения игрока.

Что такое Сinemachine в Unity?

Ограничения мягкой зоны

Это настройка "мягкой зоны". Когда вы настраиваете плавность движения камеры, она может уплыть далеко от цели, что-бы этого не происходило, необходимо настроить эти параметры. Если в момент настройки находиться в окне режиме проигрывания игры, то все изменения будут видны сразу. Для сохранения настроек после выхода из игрового режима нужно поставить галочку выше.

Как сохранять настройки синемашины в игровом режиме

Сохранение настроек в режиме игры

Иногда нужно добавить динамики, тряску камеры, это тоже делается легко. Выбираем Noise, затем нужный профиль и настраиваем его как угодно.

Настройка тряски камеры

Отлично, мы настроили камеру для игрового персонажа. И заметьте, ни единой строчки кода!

Читайте также: