Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Pregunta rapidita

Iniciado por BegProductions, Agosto 29, 2016, 10:00:56 PM

Tema anterior - Siguiente tema
Bueno que tal, siento interrumpirles pero quería hacerles una pregunta muy rapida la verdad estuve pensando en app´s y se me ocurrio una ,lo que quiero hacer es que cuento le des a un objeto 3d cualquiera este se anime o agite, no esto seguro pero creo que eso se puedo hacer desde el animator con alguna opción como Higlited alo mejor, no se el script pues lo tengo completo casí pero solo es eso unobjeto 3d que no desaparece nunca ,pero que al darle a en el centro  , una bola gira en X y en Y bruscamente supongo que cogiendo su transform y rotandolo en un rango aleatoriamente funcionaría pero nose, pues bueno si me podeis solucionar la vida diciendo como se hace pues gracias,Bueno Nos Vemos Compañeros
La verdad es que es para Programar una *Bola Mágica del Sí o No*

Tienes que detectar el toque en la pantalla de alguna forma, puedes usar la clase Touch mediante Input.getTouch, pero creo que la función OnMouseDown también reconoce los toques a la pantalla, una vez detectado el toque lo mejor sería una corrutina (función) que te girara la bola, primero obtienes una rotación random, habrá muchas formas, puedes empezar por un vector3 con números aleatorios, una vez tengas definida la rotación entras en un bucle, yo uso una variable auxiliar float que aumenta poco a poco y vas actualizando la rotación con una función lerp en función de la variable, una vez la variable sea igual o mayor que 1 sales del bucle.

Cita de: juanma_teso date=1472536062Tienes que detectar el toque en la pantalla de alguna forma, puedes usar la clase Touch mediante Input.getTouch, pero creo que la función OnMouseDown también reconoce los toques a la pantalla, una vez detectado el toque lo mejor sería una corrutina (función) que te girara la bola, primero obtienes una rotación random, habrá muchas formas, puedes empezar por un vector3 con números aleatorios, una vez tengas definida la rotación entras en un bucle, yo uso una variable auxiliar float que aumenta poco a poco y vas actualizando la rotación con una función lerp en función de la variable, una vez la variable sea igual o mayor que 1 sales del bucle.
   


Prodrias porfavor explicarlo de tal manera que yo pueda hacerlo, me esta matando ya tres horas de mierda y no consigo nada, no me funciona nada siempre error,error y mas error

Dime qué no entiendes y te lo vuelvo a explicar de otra forma.

Cita de: BegProductions date=1472500856Bueno que tal, siento interrumpirles pero quería hacerles una pregunta muy rapida la verdad estuve pensando en app´s y se me ocurrio una ,lo que quiero hacer es que cuento le des a un objeto 3d cualquiera este se anime o agite, no esto seguro pero creo que eso se puedo hacer desde el animator con alguna opción como Higlited alo mejor, no se el script pues lo tengo completo casí pero solo es eso unobjeto 3d que no desaparece nunca ,pero que al darle a en el centro  , una bola gira en X y en Y bruscamente supongo que cogiendo su transform y rotandolo en un rango aleatoriamente funcionaría pero nose, pues bueno si me podeis solucionar la vida diciendo como se hace pues gracias,Bueno Nos Vemos Compañeros
   
   
      La verdad es que es para Programar una *Bola Mágica del Sí o No*
   


Si no he entendido mal, quieres que al tocar un GameObject este gire aleatoriamente, no?
 
 
 
La funcion OnMouseDown como ya han dicho nos sirve. Podriamos hacer algo asi (no lo he probado pero deberia funcionar)
 

private Vector3 startRotation;  //Rotacion en la que comienza a girar
private Vector3 targetRotation; //Rotation a la que queremos llegar
private float progress = 1;     //Progreso del Lerp (0 = startRotation, 1 = targetRotation)
private bool touched = false;   //Indica si el objeto ha sido tocado, true = rotando, false = quieto
public float speed;             //Velocidad con la que aumenta la variable progress
//Al tocar el objeto
private void OnMouseDown () {
  //Si no esta rotando
  if (!touched) {
    //Vamos a empezar a rotarlo
    touched = true;
   
    //Guardamos la rotacion en la que comienza
    startRotation = transform.rotation.eulerAngles;
   
    //Generamos una rotacion destino aleatoriamente
    targetRotation = startRotation + new Vector3(Random.Range(, 1), Random.Range(, 1), Random.Range(, 1)) * Random.Range(, 360);
  }
}
//Cada frame
private void Update () {
  //Si tenemos que rotar el obejto
  if (touched) {
    //Aumentamos el progreso del Lerp
    progress += Time.deltaTime * speed;
   
    //Calculamos el Lerp
    var euler = Vector3.Lerp(startRotation, targetRotation, progress);
    //Rotamos el objeto
    transform.rotation = Quaternion.Euler(euler);
   
    //Si hemos terminado de rotarlo
    if (progress >= 1) {
      //Reseteamos las variables
      touched = false;
      progress = ;
    }
  }
}

 
 

Etiquetas: