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 );
}
}
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.
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"...
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.
gracias a todos me ha funcionado.
una pregunta : si quiero hacer que un coche al torcer rote, que tipo de quaternion uso??
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
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...