![]() |
Ответ: Вопросы от новичка
делал когда-то сглаживание движения мыши так: есть массив размером 60 элементов, в апдейт удаляю первый элемент, сдвигаю все элементы и в конец записываю дельту мыши. а потом из этого массива нахожу среднюю дельту мыши.
как бы все хорошо, но при разных фпс по разному работает. как можно сделать, чтобы при разных фпс оно одинаково работало? а еще лучше сглаживать движение и вращение самой камеры. только как найти средний угол из нескольких я не пойму. во всяком случае я замечаю как в играх камера от третьего лица не жество привязана к персонажу. |
Ответ: Вопросы от новичка
имхо мышь никто не сглаживает, самый простой способ - вращать и перемещать вспомогательный объект вместо камеры, а камеру стремить к ориентации и положению этого объекта. Потом просто две строчки:
PHP код:
|
Ответ: Вопросы от новичка
Как проверить входит ли объект в камеру или нет? И если возможно еще добавить условие от краев камеры до объекта расстояние должно быть больше 3.
|
Ответ: Вопросы от новичка
вхождение объекта в камеру можно проверить посчитав ее плейны камеры
http://docs.unity3d.com/Documentatio...tumPlanes.html и протестировав габариты объекта с помощью них http://docs.unity3d.com/Documentatio...lanesAABB.html |
Ответ: Вопросы от новичка
камере от первого лица легко получилось сделать такое сглаживание. дополнительный обьект там совсем не нужен.
а вот камера от третьего лица начинает дрожать т.к. при интерполяции она сбивается с цели. можно интерполировать не финкльную трансформацию камеры, а ее углы вокруг цели(angles в MouseOrbit), а вот при интерполяции позии цели почему-то снова дрожания появляются, а хотелось бы и сглаженное движение сделать. |
Ответ: Вопросы от новичка
А пример показать как ты делаешь?
|
Ответ: Вопросы от новичка
Код:
using UnityEngine; |
Ответ: Вопросы от новичка
А что если
PHP код:
|
Ответ: Вопросы от новичка
так же. в любом случае эоо,не решение, а затычка) а тебе не приходилось писать игры от третьего лица?
еще такой вопрос чешится) если я в апдейт активирую какой-то обьект, то можно после его отрисовки отключить без лишних переменных? т.е. перед апдейтом или после рендеринга каждый кадр отключать его? пока у меня есть дополнительная переменная отвечающая за его состояние. и в LateUpdate я делаю if !active then go.active = false; active = false. часто что-то надо включить на один кадр, а в следующем выключить. кумарит на такую мелочь тратить больше двух строк когда) может есть лучше способ решить это. |
Ответ: Вопросы от новичка
Что-то мне не заметно как она дрыгается... попробуй так:
PHP код:
на счет остановки - есть возможность запустить корутину, которая дождется конца кадра и сделает дело - http://docs.unity3d.com/Documentatio...ndOfFrame.html. |
Ответ: Вопросы от новичка
если бы понять почему при lerp дрожание происходит. теоретически камера просто должна немного отставать. но нет(.
за корутину и забыл, хотя я ее и не хотел использовать) |
Ответ: Вопросы от новичка
проблема была в том что цель двигалась в фиксед апдейт, а камера сглажывашась в кпдейт)
теперь надо как то сглаживать движение камеры после фиксед апдейт. наверна свой цикл с корутиной в цикле надо делать. может есть лучше варианты? update: лучше просто в фиксед апдейт это делать. конечно гарантии нет, что выполнятся будет именно после фиксед апдейта цели, но это и не надо) |
Ответ: Вопросы от новичка
есть твердое тело в лифте, лифт анимируется анимацией. можно сделать чтобы это тело не прыгало, когда лифт опускается?
|
Ответ: Вопросы от новичка
попробовать в LateUpdate смещать объект на величину смещения лифта с прошлого кадра?
|
Ответ: Вопросы от новичка
вручную смещать то просто)
да и не очень хорошо смещать rigid body вручную. |
Часовой пояс GMT +4, время: 22:35. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot