Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: zopas tv en Octubre 10, 2017, 03:52:38 PM

Título: ayuda con script de movimiento
Publicado por: zopas tv en Octubre 10, 2017, 03:52:38 PM
muy buenas de nuevo, no me pasaba por aqui ya que no tenia ningun problema hasta ahora. El caso es que tengo un script de movimiento creado pero para sorpresa, al iniciar el proyecto el coche se buguea llendo para los lados y no para. 
 
¿me podeis ayudar?
 

using UnityEngine;
using System.Collections;
public class movimiento2 : MonoBehaviour {
public float Velocidad = 10f;
public    Rigidbody rig;
// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
   float tecladoVertical = Input.GetAxisRaw ("Vertical");
   float PosZ = transform.position.z + (tecladoVertical * Velocidad * Time.deltaTime);
   transform.position = new Vector3 (PosZ, transform.position.y, transform.position.x );
}
}

 
 
Título: ayuda con script de movimiento
Publicado por: GSG3D en Octubre 10, 2017, 04:06:37 PM
En la ultima linea deberia ser asi, por el orden Vector3(x,y,z)

 
 

transform.position = new Vector3 (transform.position.x, transform.position.y, PosZ);

 
Y por ultimo si tienes un rigibody como componente este puede afectar el moviemiento, desactivalo para descartar.
Título: ayuda con script de movimiento
Publicado por: Igor en Octubre 10, 2017, 04:12:50 PM
yo creo que el script esta bien....
 
creo que podria ser cosa del rigidbody....
 
prueba a quitar el rigidbody al GameObject, (en el editor, "remove component") y borra la linea "public RigidBody rig;" (de momento, para probar) 
 
si sigue fallando sin el rigidBody ya no se que puede ser....
 
pero si al quitar el rigidbody va bien.... entonces seguramente seran las "constraints" del rigidbody... en el editor en el inspector del objeto, en el rigidbody clicka frezze rotation(check) y desclicka(uncheck) las freeze position.... o quizas tengas que clicar/desclicar alguna position... o la "use gravity"... 
Título: ayuda con script de movimiento
Publicado por: lightbug en Octubre 10, 2017, 04:26:06 PM
Cita de: zopas tv date=1507643558¿me podeis ayudar?
   


primero lo que dijo @GSG3D, el orden es x,y,z. Seguro sea eso
 
Para agregar, si vas a sumar valores a un componente x o y o z podes hacer esto:
 

using UnityEngine;
using System.Collections;
public class movimiento2 : MonoBehaviour {
public float Velocidad = 10f;
public    Rigidbody rig;

void Start () {

}


void Update () {
   float tecladoVertical = Input.GetAxisRaw ("Vertical");
   //usa uno solo de estos...
   //si vas a modificar el X
   transform.position += Vector3.Right * tecladoVertical * Velocidad * Time.deltaTime;      
   //si vas a modificar el Y
   transform.position += Vector3.Up * tecladoVertical * Velocidad * Time.deltaTime;
   //si vas a modificar el X
   transform.position += Vector3.Forward * tecladoVertical * Velocidad * Time.deltaTime;
   
   //Vector3.Up, por ej ya esta definido en la estructura y significa <0,1,0>,
        //Es decir, sumas 0 en x y en z, y el valor que le pasaste en Y. Si se te complica visualizarlo asi es el algebra vectorial
         // ademas te evitas el "new" , y haces todo directamente
     
     
      //tene en cuenta que te estas moviendo globalmente, no en la direccion del coche sino en la direccion del mundo, quizas te sirva
      //para tu caso, pero si cambias dos cosas en la escena nada te va a andar
}
}

 
 
 
Cita de: Igor date=1507644770prueba a quitar el rigidbody al GameObject, (en el editor, "remove component") y borra la linea "public RigidBody rig;" (de momento, para probar) 
   


con borrar la linea no hace nada  jajaj. O lo puede borrar, o mejor aun hacerlo kinematico, si es que a futuro va a usar test de colision o cosas asi.
Título: ayuda con script de movimiento
Publicado por: zopas tv en Octubre 10, 2017, 04:34:02 PM
gracias a todos me ha funcionado.
 
una pregunta : si quiero hacer que un coche al torcer rote, que tipo de quaternion uso??
Título: ayuda con script de movimiento
Publicado por: lightbug en Octubre 10, 2017, 04:52:47 PM
Cita de: zopas tv date=1507646042gracias a todos me ha funcionado.
   
   
      una pregunta : si quiero hacer que un coche al torcer rote, que tipo de quaternion uso??
   


Podes modificar un quaternion (matriz de rotacion) o directamente usar una funcion que lo haga, te recomiendo transform.Rotate:
 
https://docs.unity3d.com/ScriptReference/Transform.Rotate.html (https://docs.unity3d.com/ScriptReference/Transform.Rotate.html)
 
de la pag:
 

void Update()
    {
        // Rotate the object around its local X axis at 1 degree per second
        transform.Rotate(Vector3.right * Time.deltaTime);
        // ...also rotate around the World's Y axis
        transform.Rotate(Vector3.up * Time.deltaTime, Space.World);
    }

 
Una vez que rotes, no te va a andar todo lo anterior jajaja
Título: ayuda con script de movimiento
Publicado por: Igor en Octubre 10, 2017, 05:00:48 PM
ah!
 
jeje
 
no me fije el orden de las variables...  x,y,z, no z,x,y 
 
seguro sera eso
 
decia que la borrase la variable rig, porque si iba a "remove component" rigidbody paraprobar si era eso lo que fallaba, ya no iba a pintar nada la variable
 
pero si, lo mas seguro sea el orden de las variable...