Почему WaitForSeconds не работает как надо?

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

Почему WaitForSeconds не работает как надо?

Сообщение Chaz 05 ноя 2012, 19:56

Привки. ЕОС, есть один скрипт.
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class Spline : MonoBehaviour {
        public Transform start,mid,end;
        public float t=0.1f;
        private LineRenderer lr;
        private int j=0;
        private float tmp;
        public Transform rot;
        private Vector3[] v3;
        public float speed=0.001f;
       
       
        // Use this for initialization
        void Start () {
                j =  int.Parse((1/t).ToString());
                lr=(LineRenderer)GetComponent("LineRenderer") as LineRenderer;
                lr.SetWidth(0.5f,0.5f);
                lr.SetColors(Color.white,Color.white);
                lr.SetVertexCount(j);
                tmp=t;
                v3=new Vector3[100];
                rot.position=start.position;
       
        }
       
        // Update is called once per frame
        void Update () {
       
                if(Input.GetKeyDown(KeyCode.F))
                        go();
       
               
        }
       
        void go()
        {              
                for(int i = 0; i<j; i++)
                {                      
                        Vector3 temp = Mathf.Pow((1-tmp),2)*start.position+2*tmp*(1-tmp)*mid.position+Mathf.Pow(tmp,2)*end.position;   
                        v3[i]=temp;
                        tmp+=t;
                }
                tmp=t;
                StartCoroutine(move());
        }
       
        IEnumerator move()
        {
                for(int i = 0; i<j;i++)
                {
                rot.position=Vector3.Lerp(rot.position,v3[i],1);
                        lr.SetPosition(i,v3[i]);
                        yield return new WaitForSeconds(speed);
                               
                                }
        }
}
 

в сцене 3 кубика, 1 сфера и 1 объект с LineRenderer. В скрипте рассчитывается кривая по формуле квадратичной кривой Безье. Точек на этой кривой я поставил 100, после расчета всех точки заносятся в массив, а после этого в IEnumerator move() мне хотелось бы отрисовывать линию и двигать сферу по точкам кривой с определенной скоростью, но минимальная пауза в WaitForSeconds по-ходу = 0.01, и если у меня 100 точек, то линия отрисовываться должна 1 секунду, но это как-то медленно, а быстрее сделать хз как, ибо если поставить 0.001, то скорость не меняется =\
Chaz
Адепт
 
Сообщения: 1412
Зарегистрирован: 07 апр 2012, 11:24

Re: Почему WaitForSeconds не работает как надо?

Сообщение waruiyume 05 ноя 2012, 20:07

Минимальная задержка 1 кадр, "рисуйте" несколько за 1 раз. viewtopic.php?f=18&t=11857
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Почему WaitForSeconds не работает как надо?

Сообщение Chaz 05 ноя 2012, 20:25

waruiyume писал(а):Минимальная задержка 1 кадр, "рисуйте" несколько за 1 раз. viewtopic.php?f=18&t=11857

Кона-тян всегда меня выручает! Аригато!
Chaz
Адепт
 
Сообщения: 1412
Зарегистрирован: 07 апр 2012, 11:24


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

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

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