Вращение камеры вокруг персонажа.
|
|
ggman | Дата: Вторник, 08 Июля 2014, 23:41 | Сообщение # 1 |
постоянный участник
Сейчас нет на сайте
| Знаете во многих играх от третьего лица можно вращать камеру вокруг персонажа на 360 градусов, а персонаж при этом стоит и не двигается. В результате можно посмотреть на него спереди, сзади или сверху. Камера вращается по сферичной плоскости и при этом всегда направлена на персонажа. Подскажите, пожалуйста в какую сторону копать чтоб это сделать?
Сообщение отредактировал ggman - Среда, 09 Июля 2014, 01:53 |
|
| |
romgerman | Дата: Среда, 09 Июля 2014, 00:25 | Сообщение # 2 |
старожил
Сейчас нет на сайте
| Цитата ggman ( ) от первого лица Цитата ggman ( ) посмотреть на него спереди, сзади или сверху Цитата ggman ( ) всегда направлена на персонажа Что-то тут не так.
|
|
| |
allods | Дата: Среда, 09 Июля 2014, 00:51 | Сообщение # 3 |
почти ветеран
Сейчас нет на сайте
| стандартный MouseLook скрипт
|
|
| |
ggman | Дата: Среда, 09 Июля 2014, 01:54 | Сообщение # 4 |
постоянный участник
Сейчас нет на сайте
| Воу, воу, воу. Тупанул. Я имел в виду от третьего лица. Перепутал.
|
|
| |
Ranger | Дата: Среда, 09 Июля 2014, 05:04 | Сообщение # 5 |
почти ветеран
Сейчас нет на сайте
| В стандартных ассетах есть скрипты для камеры. Если хочется своего, то самое простое решение: сделать сложный объект: в центре пустой ГО . чилдом повесить камеру, повернутую к пустому ГО. Пустой ГО совместить с игроком и просто делать поворот этого сложного объекта. Решение простое, но будут косяки при подходе к препятствиям.
более сложное: повесить физику на камеру и держать ее физикой около персонажа ротацию камеры получать через LookAt.
Ну и третье. Компромиссный вариант: повесить физику на камеру и пустой ГО и привязать камеру к пустому ГО джоинтом. Успехов.
Сообщение отредактировал Ranger - Среда, 09 Июля 2014, 05:29 |
|
| |
lentinant | Дата: Среда, 09 Июля 2014, 15:22 | Сообщение # 6 |
ленивый программист
Сейчас нет на сайте
| Цитата Ranger ( ) Решение простое, но будут косяки при подходе к препятствиям. Обычный рейкаст решает эту проблему.
Когда-то тут будут ссылки на крутые проекты. Или нет.
|
|
| |
Vip_and_Rip | Дата: Среда, 09 Июля 2014, 16:05 | Сообщение # 7 |
почетный гость
Сейчас нет на сайте
| Цитата romgerman ( ) от первого лица
Цитата ggman () посмотреть на него спереди, сзади или сверху
Цитата ggman () всегда направлена на персонажа
Что-то тут не так.
В Fallout и Skyrim можно переключать между видами от первого и третьего лица, и крутить камеру, как заблагорассудится - хоть женскому персонажу под юбку заглядывай.
Больше никогда не буду делать игры.
|
|
| |
Ranger | Дата: Среда, 09 Июля 2014, 16:20 | Сообщение # 8 |
почти ветеран
Сейчас нет на сайте
| Цитата lentinant ( ) Обычный рейкаст решает эту проблему. да, кстати. я примерно понял, как это можно сделать. Но хотелось бы твое решение, если не затруднит.
|
|
| |
allods | Дата: Среда, 09 Июля 2014, 16:44 | Сообщение # 9 |
почти ветеран
Сейчас нет на сайте
| Цитата Vip_and_Rip ( ) хоть женскому персонажу под юбку заглядывай. Норм увидеть чего сможешь только с модами
Сообщение отредактировал allods - Среда, 09 Июля 2014, 16:44 |
|
| |
andarky | Дата: Среда, 09 Июля 2014, 16:56 | Сообщение # 10 |
старожил
Сейчас нет на сайте
| я делаю обычного FPS из.стандартной поставки. Отключаю его камеру (можно вообще удалить её) ну или пишу скрипт переключения меж камерами.
Потом создаю пустышку - и привязываю к ней камеру №2. В стандартном наборе скриптов также есть какой-то для следования за объхектом, там можно и замедления плавные сделать - вот его я вешаю на эту пустышку и в скрипте Target = FPS-character
настраиваю удаленность угол камеры и дописываю скрипт которым вращать вокруг перса. Хотя можно не писать а порыться в стандарт-ассет - там всё есть. Уже все придумано и написано.
Так я могу бегать и смотреть из глаз - а потом щелк - на нужную кнопку - и я вижу себя со стороны. Камеру можно крутить как кнопками так и мышой. Можно вообще сделать чтобы плавно вращалась и двигалась сверху всегда держа в фокусе гл.перса
Самая большая сложность (чего я не решил) это когда персонажа не видно за стеной. Незнаю как написать скрипт - чтобы если его не видно - камера вставала в позицию откуда его видно хорошо....
Моя страничка по дизайну GameDev//Design//3D Ютубчик
|
|
| |
lentinant | Дата: Среда, 09 Июля 2014, 18:12 | Сообщение # 11 |
ленивый программист
Сейчас нет на сайте
| Цитата Ranger ( ) да, кстати. я примерно понял, как это можно сделать. Но хотелось бы твое решение, если не затруднит. Находить необходимое положение камеры (можно просто брать вектор типа transform.forward пустого GO, и умножать на радиус), лайн/рейкастить от центра этого самого GO до полученной координаты, если получили результат - перемещаем камеру в точку столкновения, если не получили - на ранее рассчитанную координату.
Когда-то тут будут ссылки на крутые проекты. Или нет.
|
|
| |
ggman | Дата: Четверг, 10 Июля 2014, 01:39 | Сообщение # 12 |
постоянный участник
Сейчас нет на сайте
| Так ребята, давайте по порядку, что за стандартный скрипт которым можно крутить камерой вокруг персонажа? Сейчас смотрел и не могу найти подходящий. Цитата Ranger ( ) Если хочется своего, то самое простое решение: сделать сложный объект: в центре пустой ГО . чилдом повесить камеру, повернутую к пустому ГО. Пустой ГО совместить с игроком и просто делать поворот этого сложного объекта. Решение простое, но будут косяки при подходе к препятствиям. Да, тоже думал об этом, но не хочется делать нагромождение лишних объектов, а сделать все через математику.
|
|
| |
Ranger | Дата: Четверг, 10 Июля 2014, 06:40 | Сообщение # 13 |
почти ветеран
Сейчас нет на сайте
| Цитата ggman ( ) сделать все через математику. ну хозяин - барин. умножением кватерниона поворота на вектор, (up или forward не помню что там с камерой - нужно смотреть) получаем вектор направления в пространстве, соответствующий повороту камеры. от персонажа пускаем луч согласно вектора направления . кастуем рэйкаст (как говорил лейтенант) получаем точку коллизии с препятствием. если дистанция до препятствия меньше желаемой дистанции камеры, помещаем камеру туда. если нет - на луче отмеряем нужную дистанцию. и ставим туда камеру. потом меняем ротацию камеры через LookRotation на персонажа и всё. Только: 1. подобрать поправку на дистанцию при коллизии камеры 2. отключать рендер персонажа, если камера слишком близко к нему
Сообщение отредактировал Ranger - Четверг, 10 Июля 2014, 06:53 |
|
| |
dimanmonster | Дата: Пятница, 11 Июля 2014, 13:35 | Сообщение # 14 |
почетный гость
Сейчас нет на сайте
| используй transfom.rotation
Может я и не прав
|
|
| |