Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.63/170: Рейтинг темы: голосов - 170, средняя оценка - 4.63
103 / 104 / 54
Регистрация: 23.03.2016
Сообщений: 462

Скрипт на камеру как в редакторе Unity3d

11.04.2016, 12:16. Показов 32881. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужен скрипт для облета вокруг объекта, приближения/отдаления и тд для мыши и тача. Может есть у кого готовый скрипт?

Добавлено через 1 час 7 минут
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
39
40
41
using UnityEngine;
using System.Collections;
 
public class mainCamera : MonoBehaviour {
    [SerializeField] private Transform target;
 
    public float rotSpeed = 1.5f; //скорость вращения
    public float zoomSpeed = 5.0f; //скорость приближения камеры
    private float _rotY, _rotX; //углы по x и y
    private Vector3 _offset; //смещение камеры относительно объекта
    
 
    // Use this for initialization
    void Start() {
        _rotY = transform.eulerAngles.y; 
        _rotX = transform.eulerAngles.x;
        _offset = target.position - transform.position; //получает начальное смещение
    }
    
    void LateUpdate() {
        float input = Input.GetAxis("Mouse ScrollWheel"); 
        if (input != 0) //если крутится колесико мыши
        {
            Camera.main.fieldOfView += input * zoomSpeed; //зум
 
            //сперва хотел менять смещение, что то криво вышло
            //_offset.x += 10 * input;
            //_offset.y += 10 * input;
        }
 
        _rotY -= Input.GetAxis("Mouse X") * rotSpeed; //поворот камеры вокруг объекта
        _rotX += Input.GetAxis("Mouse Y") * rotSpeed;
 
        if (_rotY != 0 || _rotX != 0)
        {
            Quaternion rotation = Quaternion.Euler(_rotX, _rotY, 0); //задает вращение камеры
            transform.position = target.position - (rotation * _offset); 
            transform.LookAt(target);
        }
    }
}
вот что пока получилось собрать
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.04.2016, 12:16
Ответы с готовыми решениями:

Как отредактировать файл специального формата в текстовом редакторе или редакторе кодов?
Привет специалистам! Я - программист СУБД и не могу решить указанную задачу. Как отредактировать файл специального формата (XLS,...

Не работает скрипт в Unity3d
Написал вот такой скрипт для того чтобы поворачивать объект на N градусов по N оси для юнити 3д, но он не работает. Не понимаю в чем тут...

Скрипт показа видео через веб-камеру на сайте
Есть ли какое то готовое решение/сервис, который позволял бы разместить на сайте скрипт, который показывал бы потоковое видео с веб-камеры...

27
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
17.04.2016, 19:09
Студворк — интернет-сервис помощи студентам
Quat1111, потому что вертикаль - это локальная ось right, а горизонталь - глобальная up

Попробуйте:
transform.RotateAround(target.position, Vector3.up, x_angle) для горизонтального вращения и
transform.RotateAround(target.position, transform.right, y_angle) для вертикального вращения
а углы берите из движения мыши или touches[0].deltaPosition

Тогда зум можно сделать как
zoom = Input.GetAxis("Mouse ScrollWheel"); // для мыши
zoom = (touches[0].position - touches[1].position).magnitude - (touches[0].position - touches[1].position + touches[1].deltaPosition - touches[0].deltaPosition).magnitude; // для тача
transform.position += (target.position - transform.position) * zoom;

Проблем с вращением нет пока сцена не грузит железо, при критических нагрузках сразу баги полезут, простейшую оптимизацию надо делать в момент писания алгоритма.
0
103 / 104 / 54
Регистрация: 23.03.2016
Сообщений: 462
19.04.2016, 15:13  [ТС]
Cr0c,
transform.RotateAround(target.position, Vector3.up, x_angle)

Vector3.up поменял на transform.up, стало примерно как надо, только появилось вращение по оси Z.

Думал будет проще сделать обзор результата.
Выложил исходники приложения во вложении. На камере 2 скрипта, один тестовый, второй актуальный.
Вложения
Тип файла: zip unity.zip (8.90 Мб, 65 просмотров)
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
19.04.2016, 15:31
Quat1111, куда смотрит Vector3.up и куда смотрит transform.up?
0
103 / 104 / 54
Регистрация: 23.03.2016
Сообщений: 462
19.04.2016, 15:48  [ТС]
Cr0c, это понятно, потому и поменял. А как правильно сделать, не знаю.
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
19.04.2016, 21:45
Лучший ответ Сообщение было отмечено Quat1111 как решение

Решение

Quat1111, вечером дома буду - гляну

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
using UnityEngine;
using System.Collections;
public class NewBehaviourScript : MonoBehaviour {
    public GameObject cam_holder; // пустышка камеры
    public Transform target;
    public float mouse_sens = 1f;
    public float wheel_sens = 1f;
 
    void LateUpdate()
    {
        if (Input.GetMouseButton(0)) //левая кнопка мыши
        {
            float x_axis = Input.GetAxis("Mouse X") * mouse_sens;
            float y_axis = -Input.GetAxis("Mouse Y") * mouse_sens;
 
            cam_holder.transform.Rotate(Vector3.up, x_axis, Space.World);
            cam_holder.transform.Rotate(Vector3.right, y_axis, Space.Self);
        }
 
        float zoom = Input.GetAxis("Mouse ScrollWheel");
        if (zoom != 0) 
        {
            transform.localPosition = transform.localPosition * (1 - zoom);
        }
    }
}
Миниатюры
Скрипт на камеру как в редакторе Unity3d  
1
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
19.04.2016, 21:48
Всё работает четко.
0
103 / 104 / 54
Регистрация: 23.03.2016
Сообщений: 462
19.04.2016, 22:09  [ТС]
Cr0c, оставлю последний вариант, спасибо.

Смотрели мои варианты? По поводу перемещения точки обзора, так и оставить?
0
 Аватар для Cr0c
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
20.04.2016, 07:46
Цитата Сообщение от Quat1111 Посмотреть сообщение
По поводу перемещения точки обзора
Не нашел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.04.2016, 07:46

Unity3D, *скрипт управления свайпом не работает, с клавиатуры все ок
Доброго дня! Игра - 2048. Есть скрипт в 2D-проекте (Unity3D, 5.2.1p3), он навешан на камеру. В Update() прописано управление с...

Ноутбук до 26.000 р. для работы в графическом редакторе или видео-редакторе
Так же для работы в Cubase. Я понимаю, что для работы с графикой, рендеренгом видео, необходима мощность процессора. Что лучше,...

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

как включить камеру???
как включить камеру на ноутбуке ASUS F5 enterteiment system????

Как подключить моб телефон как web камеру через блютуз?
Телефон samsung gt-s5610 Я когда блютуз для компа покупала,мне сказали,что можно телефон как вебку подключить! Но я не знаю...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru