Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/29: Рейтинг темы: голосов - 29, средняя оценка - 4.55
8 / 8 / 4
Регистрация: 11.03.2015
Сообщений: 212

Камера на объект

29.03.2016, 17:00. Показов 5730. Ответов 14

Студворк — интернет-сервис помощи студентам
Добрый день, есть скрипт, который при клике на объект выводит его изображение, но не могу понять как полностью запихнуть в камеру весь объект.

Так же есть другой вопрос. Скрипт навешивается на несколько элементов, тем самым при "тыке" на несколько объектов открываются несколько окошек камер, так как скрип висит на нескольких объектов и работает с ними отдельно. Как сделать так, чтобы открывалось только одно окошко камеры? То есть кликая по каждому объекту мы и будем получать вид окна ему полагающийся, а окно которое было уже открыто для другого объекта будет закрыто.


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
void Start () {
        deviceCamera = new GameObject ();
        deviceCamera.AddComponent<Camera>();
        deviceCamera.transform.position = new Vector3 (transform.position.x - GetComponent<Renderer> ().bounds.size.x, 
                                                       transform.position.y, 
                                                       transform.position.z); //устанавливаем позицию камеры перед объектом
 
        deviceCamera.transform.Rotate (0, 90, 0); //поворачиваем камеру, чтобы смотрела на объект
        
        deviceCamera.GetComponent<Camera> ().orthographic = true; 
        var temp = deviceCamera.GetComponent<Camera>().pixelRect;
 
        deviceCamera.GetComponent<Camera>().enabled = false;
    }
 
    void OnMouseDown()
    { 
        //deviceCamera = new Camera ();
 
        deviceCamera.GetComponent<Camera>().enabled = !(deviceCamera.GetComponent<Camera>().enabled); //включать и выключать камеру
    }
 
    // Update is called once per frame
    void Update () {
        float w = Screen.width ; //ширина игрового экрана
        float h = Screen.height ; //высота игрового экрана
        float wo = GetComponent<Renderer> ().bounds.size.x; //длина объекта (пульта)
        float ho = GetComponent<Renderer> ().bounds.size.z; //ширина объекта (пульта)
        float proportion =  w / h; 
        float camHeight = (w/4) / proportion;
        if (GetComponent<Renderer> ().bounds.size.x > GetComponent<Renderer> ().bounds.size.z) { //если длина больше ширины
            deviceCamera.GetComponent<Camera> ().orthographicSize = ((GetComponent<Renderer> ().bounds.size.x / 2) * camHeight) / (w / 4); //то размер камеры установим относительно длины
        } else {
            deviceCamera.GetComponent<Camera> ().orthographicSize = GetComponent<Renderer> ().bounds.size.z / 2; //иначе относительно ширины
        }
 
        deviceCamera.GetComponent<Camera> ().pixelRect = new Rect (w - w/4, 0, w/4, camHeight); //размер окна камеры на игровой сцене
    }
Заранее спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.03.2016, 17:00
Ответы с готовыми решениями:

Аналоговая камера, плата видеозахвата, веб камера
Товарищи эксперты, прошу вашей помощи в решении стоящей передо мной задачи. Требуется подключить видеокамеру такую: CleverMic...

Может ли объект-член, или объект-элемент достучаться к содержащему его?
Предположим, class A { ... }; class B { .... A a; ... };

Есть кнопка и объект. Как по клику на кнопку закрасить объект?
Есть кнопка (допустим красная). По клику на кнопку нужно чтобы закрасился объект этим же цветом. (Кнопка сделана через div) Вот код html:...

14
103 / 104 / 54
Регистрация: 23.03.2016
Сообщений: 462
29.03.2016, 17:52
При открытии камеры отправляй сообщение на все камеры, чтобы они отключились, запусти камеру, которая нужна.

http://wiki.unity3d.com/index.... r_Extended
1
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
29.03.2016, 19:02
Почему нельзя одну камеру перемещать к объекту?
0
8 / 8 / 4
Регистрация: 11.03.2015
Сообщений: 212
30.03.2016, 16:39  [ТС]
Cr0c, Потому-что я не знаю как это сделать. Объект на сцене много и я так понимаю, скрипт должен висеть на каждом объекте. Или предлагается повесить скрипт на пустой го, который будет их искать и передавать параметры с каждого найденного объекта? А как тогда заставить по клику на объект заставить появиться обзору с камеры?
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
30.03.2016, 21:56
Naomis, камера идёт на рендер текстуру? Что мешает сделать
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public Vector3 distance; // вектор сдвига камеры от объекта
public GameObject _camera; // ссылка на камеру
public GameObject target {
 get ;
 set { 
  target = value;
  if (value != null)
  { _camera.transform.position = value.transform.position - distance;
  _camera.transform.SetParent(value.transform, true); } // не помню что тут должно быть - true или false
  else {
  _camera.transform.SetParent(null, true);
  }
 }
}
1
8 / 8 / 4
Регистрация: 11.03.2015
Сообщений: 212
31.03.2016, 18:40  [ТС]
Cr0c, что такое рендер текстура?
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
31.03.2016, 22:44
Naomis, это специальная текстура, у которой источник не загруженное изображение, а вид с какой-либо камеры.
RenderTexture
Camera.targetTexture
1
8 / 8 / 4
Регистрация: 11.03.2015
Сообщений: 212
01.04.2016, 00:04  [ТС]
Quat1111, а каким образом? Скрипт конечно один, но он весит на большом количестве объектов. Куда, кому и что передавать?

Добавлено через 16 минут
Quat1111, а что и кому отправлять? Скрипт же один, а объектов на которых он весит много. В чём суть статьи, не совсем вкурил, я с английским, к сожалению на Вы?
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
01.04.2016, 07:55
Naomis, рейкастить при клике, выставлять камеру возле объекта. Всех делов-то. И не надо на каждый объект кидать скрипт ))
1
8 / 8 / 4
Регистрация: 11.03.2015
Сообщений: 212
01.04.2016, 11:02  [ТС]
Cr0c, то есть на пустой объект вешаем скрипт в котором есть твой код, в метод OnMouseEnter ? Что-то я совсем не понимаю... А как он объект с vektor3 получает?
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
01.04.2016, 11:11
Naomis, рейкаст по клику даст объект (если попал в него), по тегу отсеиваем неподходящие

Добавлено через 50 секунд
В обычный апдейт, не надо OnMouse
1
8 / 8 / 4
Регистрация: 11.03.2015
Сообщений: 212
01.04.2016, 11:33  [ТС]
Cr0c, у меня есть код в update, куда мне тогда передать таржет? Или как-то работать с сылкой на камеру? Прошу прощения, но я правда мало, чего понимаю.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void Update () {
        float w = Screen.width ; //ширина игрового экрана
        float h = Screen.height ; //высота игрового экрана
        float wo = GetComponent<Renderer> ().bounds.size.x; //длина объекта (пульта)
        float ho = GetComponent<Renderer> ().bounds.size.z; //ширина объекта (пульта)
        float proportion =  w / h; 
        float camHeight = (w/4) / proportion;
        if (GetComponent<Renderer> ().bounds.size.x > GetComponent<Renderer> ().bounds.size.z) { //если длина больше ширины
            deviceCamera.GetComponent<Camera> ().orthographicSize = ((GetComponent<Renderer> ().bounds.size.x / 2) * camHeight) / (w / 4); //то размер камеры установим относительно длины
        } else {
            deviceCamera.GetComponent<Camera> ().orthographicSize = GetComponent<Renderer> ().bounds.size.z / 2; //иначе относительно ширины
        }
 
        deviceCamera.GetComponent<Camera> ().pixelRect = new Rect (w - w/4, 0, w/4, camHeight); //размер окна камеры на игровой сцене
    }
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
01.04.2016, 12:42
Naomis, рендер текстуру сделали? Камеру к ней прицепили? Рейкастом объект клика нашли?
1
8 / 8 / 4
Регистрация: 11.03.2015
Сообщений: 212
01.04.2016, 15:06  [ТС]
Cr0c, так понятнее, сей час разберусь, спасибо.

Добавлено через 1 час 43 минуты
Cr0c, Разобрался с рендер текстурой и камерой. А вот рейкаст клика... Нашёл что-то подобное, но как-то не вкуриваю.
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
01.04.2016, 15:25
Naomis,
C#
1
2
3
4
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, Constants.cMaxRayCastDistance))
 {GameObject rayCastedGO = hit.collider.gameObject;} else { GameObject rayCastedGO = null; }
Вот и объект найден - это rayCastedGO. Двигайте камеру к нему как душе угодно.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.04.2016, 15:25
Помогаю со студенческими работами здесь

Как увидеть объект Session и объект Server из модуля класса?
В модуле класса пишу: 'Provider=Microsoft.Jet.OLEDB.4.0;' &amp; _ 'Data Source=' &amp; Server.MapPath('../InterDict.mdb')...

Если объект добавлять в 2 контейнера, то в них будет ссылка или новый объект?
Есть объект - obj. Последовательно добавляю его в два контейнера container1.add(obj); container2.add(obj); Если я удалю...

Зачем при перегрузке оператора >> в параметр включать ссылку на объект, а не сам объект?
Зачем в параметры функции включать ссылку на объект: istream &amp;operator&gt;&gt;(istream &amp;stream, myclass &amp;ob) Почему не работает так:...

Есть ссылка на объект. Можно ли изменить объект, который хранится по этому адресу?
Есть ссылка на объект. Можно ли изменить объект, который хранится по этому адресу? Т.е. не меняя саму ссылку, изменить тип объекта, на...

Проблема с массивами + System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объект
Ошибка выскакивает на atsakymai = new string; В первой форме //ФОРМА 2: public partial class Form2 : Form { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru