Noticias

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

problema con la instanciacion de objetos

Iniciado por S0LXZ, Octubre 01, 2018, 06:22:43 PM

Tema anterior - Siguiente tema
Cita de: S0LXZ date=1538903413vale, al ponerlo funciona, pone que rota pero no es asi, es decir, en el apartado de transform (en el inspector) los numeros del eje Y cambian en función el player se mueve y el eje x ya no supone un problema, pero aunque en el inspector funcione, el zombie no rota de manera visible y no persigue al player
   


Rota pero no rota? Podrias subir una imagen con la jerarquía q usas, cualquier cosa q sume, porq el procedimiento es muy simple, si no te anda debe ser por algo más

creo que podria ser un problema de gerarquias... estas rotando el objeto equivocado.... o tambien podria ser la orientacion del objeto... cuando el zombie esta de pie en el escenario su angulo X es cero? como dice @lightbug unas imagenes ayudarian a ver de donde puede venir el problema...
 
las gerarquias... el inspector del zombi...

Octubre 07, 2018, 05:22:06 PM #17 Ultima modificación: Octubre 07, 2018, 05:23:52 PM por S0LXZ
parece que si rota pero rota muy poco 
este es el inspector del zombie, mirad como no esta mirando al player pero cada vez que se aleja rota un poco mas pero muy poco

nose... 
 
todo parece bien... prueba a poner algo asi:
 

oldRot = transform.rotation;
transform.LookAt(player.transform.position);
transform.rotation = Quaternion.Lerp(oldRot, transform.rotation, 0.1f);

 
...igual en vez de usar la posicion del player usa un new vector3 con la "Y" del enemigo...
 

new Vector3(player.transform.position.x, transform.position.y, player.transform.plsition.z);

 
asi dara igual que esten a diferente altura...


no puedo poner el oldRot en ninguna parte y lo otro no va
 
 

No parece ser problema de código, parece más problema de pivote en la malla. Prueba a usar un cubo como enemigo, con una textura que permita determinar la cara delantera.
 
O sino sube el proyecto para que lo descarguemos y probar.

 
 
Cita de: S0LXZ date=1538934224y ese oldRot como lo incluyo??
   


 
 
seria asi:
 

Quaternion oldRot = transform.rotation;
Vector3 playerPosXZ = new vector3(player.position.x, transform.position.y, player.posotion.z);
transform.LookAt(playerPosXZ);
transform.rotation = Quaternion.Lerp(oldRot, transform.rotation, 0.1f);

 
 

Cita de: debug date=1538982092
Cita de: Igor date=1538987758 
         
         
             
         
         
            seria asi:
         
         

 
Quaternion oldRot = transform.rotation;
Vector3 playerPosXZ = new vector3(player.position.x, transform.position.y, player.posotion.z);
transform.LookAt(playerPosXZ);
transform.rotation = Quaternion.Lerp(oldRot, transform.rotation, 0.1f);

         
             
         
      
   

      No parece ser problema de código, parece más problema de pivote en la malla. Prueba a usar un cubo como enemigo, con una textura que permita determinar la cara delantera.
   
   
      O sino sube el proyecto para que lo descarguemos y probar.
   


muchísimas gracias eso es lo que me funciona, os agradezco a todos el haberme ayudado

una pregunta mas, es que es mi primer proyecto completo y me esta ocurriendo un problema con los sonidos.
 
El sonido se reproduce cuando muevo el player pero solo una vez, es decir que cuando mantengo la tecla de caminar no suena, pero si la aprieto y la suelto si que se reproduce
 

if (Input.GetAxisRaw("Vertical") != 0)
   {
            this.transform.GetComponent<AudioSource>().Play();
            this.transform.Translate (-Vector3.forward * this.velocidadMovimiento * Input.GetAxisRaw ("Vertical") * Time.deltaTime); // Hacia delante  
        }
   if (Input.GetAxisRaw("Horizontal") != 0)
   {
            this.transform.GetComponent<AudioSource>().Play();
            this.transform.Translate (-Vector3.right * this.velocidadMovimientoHorizontal * Input.GetAxisRaw("Horizontal") * Time.deltaTime); // Hacia los lados
   }

 
 

Cita de: S0LXZ date=1539022921El sonido se reproduce cuando muevo el player pero solo una vez, es decir que cuando mantengo la tecla de caminar no suena, pero si la aprieto y la suelto si que se reproduce
   


No creo que no se reproduzca, me parece que se está re-reproduciendo > 60 veces por segundos y claro no te das cuenta de esto por oido (si usaras PlayOnce o algo así se dispararían muchas reproducciones a la vez, con Play no ocurre). Podés hacer que si no se está reproduciendo se reproduzca (dejalo NO en loop). Fijate en la parte de audio "isPlaying" del manual.

he probado con lo de isPlaying pero no funciona, podría ser porque el clip duramas de 1 seg??
 
 

Octubre 09, 2018, 08:13:02 PM #27 Ultima modificación: Octubre 09, 2018, 08:13:48 PM por Igor

//primero declaras en la class:
private float soundTimer = 0f;
 
//y donde haces sonar el sonido pones:
soundTimer += Time.deltatime;
if (soundTimer > 0.5f) {//pon el tiempo que quieras
   soundTimer = 0;
   sonido.Play();
   //...o como se llame te audioSource...
}

 
esto es para que suene cada 0.5 segundos (supongo que seran "pisadas")


Etiquetas: