Проблемка с камерой

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

Проблемка с камерой

Сообщение fluid 02 янв 2013, 16:56

Всем привет, и с наступившим Новым Годом!
Всем удачи, процветания на работе, и в семье - уюта и счастья.
Помогите с такой проблемкой: Есть камера, есть объект. Объект движется по оси X с определенной скоростью, камера постоянно за ним следит.
И тут начинается проблема. Анимация объекта отображается отлично, а вот перемещение всего мира, относительно таргета камеры движется с рывками.
Вот код камеры. prefab - это наша цель. пробовал все в мире убирать, кидал какой-нибудь объект в сцену, чтобы было видно движение, и все равно рывки.
Синтаксис:
Используется javascript
var target : Transform;
var distance = 7.0;
var height = 3.0;
var heightDamping = 2.0;
var rotationDamping = 3.0;
var prefab : GameObject;
var positionX=0.0f;
var positionY=0.0f;
var positionZ=0.0f;
function Start () {
                Application.targetFrameRate=30;
        var pos = Vector3 (positionX, positionY, positionZ);
        var player=Instantiate(prefab, pos, Quaternion.identity);
                target=player.GetComponent(Transform);
}

@script AddComponentMenu("Camera-Control/Smooth Follow")

function LateUpdate () {
        if (!target)
                return;
       
        var wantedRotationAngle = target.eulerAngles.y;
        var wantedHeight = target.position.y + height;
               
        var currentRotationAngle = transform.eulerAngles.y;
        var currentHeight = transform.position.y;
       
        currentRotationAngle = Mathf.LerpAngle (currentRotationAngle, wantedRotationAngle, rotationDamping * Time.deltaTime);

        currentHeight = Mathf.Lerp (currentHeight, wantedHeight, heightDamping * Time.deltaTime);

        var currentRotation = Quaternion.Euler (0, currentRotationAngle, 0);
       
        transform.position = target.position;
        transform.position -= currentRotation * Vector3.forward * distance;

        transform.position.y = currentHeight;
       
        transform.LookAt (target);
}
Аватара пользователя
fluid
UNец
 
Сообщения: 36
Зарегистрирован: 18 ноя 2010, 17:17
  • ICQ

Re: Проблемка с камерой

Сообщение fluid 02 янв 2013, 16:59

Кстати, забыл написать. Рывки выдны при компиляции (под андроид). На компе не очень видны, но все равно есть.
Аватара пользователя
fluid
UNец
 
Сообщения: 36
Зарегистрирован: 18 ноя 2010, 17:17
  • ICQ

Re: Проблемка с камерой

Сообщение Kayler 02 янв 2013, 17:14

fluid писал(а):Кстати, забыл написать. Рывки выдны при компиляции (под андроид). На компе не очень видны, но все равно есть.

попробуй вместо LateUpdate юзать FixedUpdate
Аватара пользователя
Kayler
Адепт
 
Сообщения: 1038
Зарегистрирован: 25 авг 2010, 23:49
Откуда: Чувашия

Re: Проблемка с камерой

Сообщение AndreyMust19 02 янв 2013, 18:31

Сначала убедитесь что рывки не из-за приложения в целом (много полигонов, материалов, процессорного времени), а именно из-за скрипта.
Потом попробуйте вместо Time.deltaTime подставить Time.smoothDeltaTime.
Нужна помощь? Сами, сами, сами, сами, сами... делаем все сами
AndreyMust19
Адепт
 
Сообщения: 1119
Зарегистрирован: 07 июн 2011, 13:19

Re: Проблемка с камерой

Сообщение fluid 04 янв 2013, 17:51

Убрал деревья и рывки пропали.
Только как могли эти деревья влиять так? Они по 60 трианглов каждое.
Без них выдает 60FPS при этом:
Draw Calls: 6
Tris: 1.1k
Verts 1.3k
Used Texture: 4

С ними:
Draw Calls: 11
Tris: 1.3k
Verts 1.5k
Used Texture: 6
И FPS:58 Но камера начинает двигаться рывками. Камера движется за объектом обычным скриптом:
Синтаксис:
Используется javascript
function LateUpdate()
{
        thisTransform.position.x = Mathf.SmoothDamp( thisTransform.position.x,
                target.position.x, velocity.x, smoothTime);
        thisTransform.position.y =Mathf.SmoothDamp( thisTransform.position.y,
                target.position.y+8, velocity.y, smoothTime);
}

Объект перемещаю по оси X:
Синтаксис:
Используется javascript
character.Move( velocity*Time.smoothDeltaTime);

Ничего больше нет, все GUI убрал, даже вертикальную синхронизацию отключил и все равно движение камеры с рывками.
Тестирую на трансформере TF101, на нем же спокойно проходил shadowgun без глюков.
Аватара пользователя
fluid
UNец
 
Сообщения: 36
Зарегистрирован: 18 ноя 2010, 17:17
  • ICQ

Re: Проблемка с камерой

Сообщение Medveckij 04 янв 2013, 19:55

fluid писал(а):Убрал деревья и рывки пропали.
Только как могли эти деревья влиять так? Они по 60 трианглов каждое.
Без них выдает 60FPS при этом:
Draw Calls: 6
Tris: 1.1k
Verts 1.3k
Used Texture: 4

С ними:
Draw Calls: 11
Tris: 1.3k
Verts 1.5k
Used Texture: 6
И FPS:58 Но камера начинает двигаться рывками. Камера движется за объектом обычным скриптом:
Синтаксис:
Используется javascript
function LateUpdate()
{
        thisTransform.position.x = Mathf.SmoothDamp( thisTransform.position.x,
                target.position.x, velocity.x, smoothTime);
        thisTransform.position.y =Mathf.SmoothDamp( thisTransform.position.y,
                target.position.y+8, velocity.y, smoothTime);
}

Объект перемещаю по оси X:
Синтаксис:
Используется javascript
character.Move( velocity*Time.smoothDeltaTime);

Ничего больше нет, все GUI убрал, даже вертикальную синхронизацию отключил и все равно движение камеры с рывками.
Тестирую на трансформере TF101, на нем же спокойно проходил shadowgun без глюков.


А если точнее, то сколько FPS показывает с деревьями? Ровно 58 или с перебоями?

У меня таже проблема и вот в чем странность... при довольно высоком содержании треугольников в сцене FPS колеблется между 60 и 65. И никаких подергиваний. Тестируя боевую сцену я отправил в destroy около 15k треугольников. Естественно FPS подтянулось и подтянулось до 70-72. При такой частоте замечаю неприятные подергивания толи камеры, толи персонажа, толи всей сцены в целом... непонятно.
Аватара пользователя
Medveckij
Адепт
 
Сообщения: 1014
Зарегистрирован: 10 ноя 2012, 15:44

Re: Проблемка с камерой

Сообщение fluid 05 янв 2013, 11:44

Нет не 58 ровно, а прыгает от 55 до 58.
Аватара пользователя
fluid
UNец
 
Сообщения: 36
Зарегистрирован: 18 ноя 2010, 17:17
  • ICQ


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot], Yandex [Bot] и гости: 20