Как сделать переключение камеры в unity

Обновлено: 02.07.2024

Вероятно, вам нужно добавить камеру к игровому объекту "player". Или ваш скрипт должен проверить, прикреплен ли компонент перед его использованием. SwitchCamera.Start () (на Assets/scripts/SwitchCamera.cs:10)

2 ответа

Я пытаюсь переключаться между передней и задней камерами в Objective-C с помощью UIAccelerometer. По сути, если устройство находится лицевой стороной вверх, я хочу, чтобы задняя камера была включена. Если устройство находится лицевой стороной вниз (экран опущен), я бы хотел, чтобы вместо этого.

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

Прежде всего, что касается текущей версии Unity3D:

Камера свойств устарела. Вместо этого используйте GetComponent(). (UnityUpgradable)

как указано в документах API .

Кроме того, если вам нужно переключаться между камерами, одним из способов было бы назначить их из инспектора, а затем перейти к свойству enabled . Другой способ-найти его в сцене (довольно неэффективно, если вы не знаете его точного местоположения). Я бы рекомендовал создать какой-то сервис или менеджер камер, который был бы единственной точкой смены камер. Помните, что камеры работают для всей вашей сцены, а не только для определенного объекта (но они могут использовать отбраковку для визуализации только тех слоев, которые вы хотите).

Пример:

camera1 и camera2 должны быть назначены из инспектора, то есть перетащите GameObject с компонентом Camera , прикрепленным к полю инспектора сценариев (первая камера в поле camera1 , вторая камера в поле camera2 и так далее).

Если вы получите "Camera not found", возможно, вы не добавили компонент камеры в GameObject "player", или компонент камеры уничтожен другим сценарием, или компонент камеры еще не существует, потому что вы добавляете камеру после запуска этого сценария. Я не знаю всех сценариев и иерархии игровых объектов и компонентов в проекте.

Похожие вопросы:

У меня есть сцена Three.js v72dev, состоящая из объектов, импортированных через THREE.ObjectLoader. Это хорошо работает. Теперь я импортирую камеры, которые переведены на Three.js камер из моего.

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

Я использую Adobe Air 2.5 и хотел бы переключаться между передней и задней камерами на устройстве Android. Есть ли какое-то решение? Спасибо. Ули

Я пытаюсь переключаться между передней и задней камерами в Objective-C с помощью UIAccelerometer. По сути, если устройство находится лицевой стороной вверх, я хочу, чтобы задняя камера была.

Всем доброе утро. Я разрабатываю приложение в среде Android, которое захватывает кадры из видеопотока, чтобы обработать их, а затем показывает обработанные кадры на экране. Это приложение, если.

Я создаю видео-приложение android на flex mobile, которое может переключаться между передней и задней камерами. Я написал функцию, которая переключается между двумя камерами, но она делает это.

Я пытаюсь реализовать пользовательскую камеру для записи видео. Я следовал этому образцу , и он работает нормально. Теперь я хочу добавить функциональность Switch Camera по щелчку кнопки. Он должен.

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

Как вращать или переключаться между передней и задней камерами в GPUImage2 (Switch version) с помощью swift (toggle with a button). Любая помощь была бы очень признательна вам заранее.

Назовите сценарий CameraSwitch (ФИО CameraSwitch.cs ), создайте новый GameObject в вашей сцене или используйте существующий, добавьте скрипт в GameObject (либо из Add Component меню или просто перетащите скрипт в инспектор вашего GameObject), затем вам нужно расширить свойство Cameras нажав на нее в инспекторе, установите номер камеры ( Size ) к 3, и свяжите ваши камеры в следующих полях. Сначала установите основную камеру и не оставляйте поле пустым, иначе скрипт не удастся.

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

У меня стандартный контроллер первого лица с его основной камерой. Я добавил еще 2 камеры для использования с текстурами рендеринга. Однако, когда я отлаживаю, он использует другую камеру, а не главную камеру с FPC. Можно ли выбрать, какая камера используется?

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

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

Camera disabling

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


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

Но мы не ищем лёгких путей

Подготовка объектов.

Итак, начнём с того, что создадим какой-нибудь объект (например куб) и привяжем на него камеру (она у нас сейчас только одна — главная камера).

Написание скрипта.

Изначально нужно было определить позицию мышки.

Это оказалось довольно просто — через класс Input и его параметр mousePosition, который содержит три координаты для каждой из осей — x, y и z.

Итак, заведём внутреннюю переменную MousePos, и будем сохранять в неё координаты текущей позиции мышки. Делать это лучше всего перед отрисовкой экрана в событии Update().

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

Незачем это делать каждый раз, а достаточно будет сделать при создании самой камеры на сцене:

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

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

Узнать состояние клавиш мышки можно через всё тот-же класс Input. Специально для этого у него есть метод GetMouseButton.

Само перемещение камеры будем располагать в событии FixedUpdate():

И наконец, мы подошли к самому интересному — определить угол поворота в зависимости от позиции мышки и повернуть камеру.

Коэффициент поворота определить довольно просто: определяем позицию мышки, отнимаем от неё координату середины экрана, и делим получившееся число на размер экрана (отдельно для оси Х и отдельно для Y).

К примеру, мышка находится на координате 852 по оси Х, а размер экрана по ширине равен 1024. Тогда, согласно формуле:

Коэффициент -0,16796875 как раз и будет отвечать за угол поворота по оси Х.

Угол мы рассчитали, теперь осталось только повернуть камеру.

Сделать это можно, используя метод RotateAround класса transform.

Примечание.

И теперь то-же самое для поворота по вертикали:

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

Давайте учтём это желание в нашем скрипте. Для этого введём параметр чувствительности sensitivity, и будем его использовать как коэффициент, влияющий на угол поворота:

Скрипт целиком.

Вот теперь точно всё, и осталось только показать весь скрипт целиком, с моими комментариями =)

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