эффект ходьбы

Программирование на Юнити.

эффект ходьбы

Сообщение VitaMin00 12 май 2012, 12:52

Всем привет) Просьба помочь с скриптом, который накатал для видимости ходьбы, а не тупо передвижении камеры.
Проблема в том, что падает фпс, как начинаешь двигаться, примерно на 5-8 единиц. где накосячил? Использую GUI_Texture. В кратце, при нажатии клавиши вперёд камера движется вперёд и попутно сдвигается вверх/ вниз, влево/ вправо, что и создаёт иллюзию шагов. Но неужели, это должно столько ФПС жрать? может его можно как то оптимизировать?
Синтаксис:
Используется csharp
public bool CanUpCamera = true;
public bool Can_Left_Camera = true;
public bool Can_Right_Camera = false;
public bool Peremennaya = false;

void Update () {
if (Camera.mainCamera.transform.position.y >= 0.39f){
                        CanUpCamera = false;
                        if (Can_Left_Camera && Peremennaya){
                                Can_Left_Camera = false;
                                Can_Right_Camera = true;
                                Peremennaya = false;
                        }
                        if (Can_Right_Camera & Peremennaya){
                                Can_Left_Camera = true;
                                Can_Right_Camera = false;
                                Peremennaya = false;
                        }
                }
                if (Camera.mainCamera.transform.position.y <= 0.31f){
                        CanUpCamera = true;
                        Peremennaya = true;
                }
        }

       void FixedUpdate () {
        foreach (Touch touch in Input.touches){
             if( GUI_Forward.HitTest(touch.position)) {
                this.rigidbody.velocity = this.transform.forward * 2.7f;
                if (Camera.mainCamera.transform.position.y <= 0.39f && CanUpCamera){
                        Camera.mainCamera.transform.Translate(0, 0.3f * Time.deltaTime, 0);
                        if(Can_Left_Camera) Camera.mainCamera.transform.Translate(0.17f * Time.deltaTime, 0, 0);
                        if(Can_Right_Camera) Camera.mainCamera.transform.Translate(-0.17f * Time.deltaTime, 0, 0);
                }
                if (Camera.mainCamera.transform.position.y >= 0.31f && CanUpCamera == false){
                        Camera.mainCamera.transform.Translate(0, -0.3f * Time.deltaTime, 0);
                        if (Can_Left_Camera) Camera.mainCamera.transform.Translate(-0.17f * Time.deltaTime, 0, 0);
                        if (Can_Right_Camera) Camera.mainCamera.transform.Translate(0.17f * Time.deltaTime, 0, 0);
                        }
                }
        if( GUI_Back.HitTest(touch.position)) {
                 this.rigidbody.velocity = this.transform.forward * -1.4f;
        }
        if( GUI_Right.HitTest(touch.position)) {
                this.transform.Rotate(Vector3.up * 120 * Time.deltaTime);
        }
        if( GUI_Left.HitTest(touch.position)) {
                this.transform.Rotate(Vector3.up * -120 * Time.deltaTime);
        }
        }
 
VitaMin00
UNITрон
 
Сообщения: 187
Зарегистрирован: 12 мар 2012, 19:54

Re: эффект ходьбы

Сообщение Order 12 май 2012, 20:26

Уверены что фпс падает именно из за этого ? я так понял это на иос или андроид, может гуи тормозит или шейдеры.

Как я понял нужно немного раскачивать камеру, по идее нужна одна функция синусоиды или можно менять угол и радиус крепления камеры.
Добавить rusorder в Skype , _juc4you@mail.ru ;
Платные консультации, программирование ваших проектов Unity3d,C#,IOS,Android.
Скрытый текст:
_ttp://www.youtube.com/watch?v=1m2qTnatSjM&list=UUjcKNvONEUHCILG7QrX1NFg
Order
Старожил
 
Сообщения: 805
Зарегистрирован: 21 фев 2010, 10:34


Вернуться в Скрипты

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8