Jump to content
UnitySpain
Arsen

¿Por que se mueve diferente al tutorial?

Recommended Posts

Hola buenas tardes, me encuentro realizando los tutoriales de la pagina ofical de Unity, 
(Vídeo del tutorial en el segundo de referencia) 
(Link al tutorial completo)

Mi problema es que inserto el código tal y como me aparece en la pagina (Adaptado para unity 5):

using UnityEngine;
using System.Collections;

public class Mover : MonoBehaviour
{
    public float speed;

    void Start ()
    {
         rb = GetComponent<Rigidbody>();
         rb.velocity = transform.forward * speed;
    }
}

Pero no obtengo los mismos resultados, mi objeto de láser tiene otro tipo de movimiento,
como si estuviese en bajos frames:
(Vídeo a mis resultados)

De antemano muchas gracias.
:26_nerd:



 

Edited by pioj
uso correcto de los tags

Share this post


Link to post
Share on other sites

 

7 hours ago, Gastonspas said:

Que pasaria si haces esto


rb.velocity = transform.forward * speed;

 

------>

 


rb.velocity = transform.forward * speed * Time.deltaTime;

Nada, solo la haria mucho mas pequeña porque el codigo no es dependiente del tiempo y él lo usa en Start

@Arsen postea tus opciones de Physics, estan en edit/projects/Physics o algo parecido. Quizas los steps esten mal?

Edited by lightbug

Share this post


Link to post
Share on other sites

@Gastonspas: Si coloco Time.deltaTime, el láser no se mueve.

@lightbug, muy bien estos son los parámetros, no se si tenga que configurar algo, pero desde que instale unity no he modificado nada de allí :2_grimacing::
 

Captura.PNG

Edited by Arsen

Share this post


Link to post
Share on other sites

Tambien puedes ponerlo de esta forma: transform.position += Vector3.up * speed * Time.delta.time

puedes cambiar el Vector3 por Vector3.right, Vector3.left o Vector3.down para cambiar la direccion

Share this post


Link to post
Share on other sites
11 hours ago, Moand said:

Tambien puedes ponerlo de esta forma: transform.position += Vector3.up * speed * Time.delta.time

puedes cambiar el Vector3 por Vector3.right, Vector3.left o Vector3.down para cambiar la direccion

Si es en el Update si, es mas yo no usaria jamas un rigidbody con velocity para algo tan simple como mover algo para adelante, usaria puros transforms como decis y el rigidbody lo haria kinematico.

@Arsen podes subir mas info, el rigidbody, el transform completo (no se si podria ser algo con las escalas ...?). Las opciones de Physics las tengo igual.

En fin, la verdad no tengo ni idea porque se le mueve asi, pense que habia alguna opcion de steps de simulacion o algun threshold de algo.

Share this post


Link to post
Share on other sites

Muy interesante.  :1_grinning:

@Moand Use la forma que me compartiste, solo que cambie Up por Forward, y ¡funciono! con Up el problema que me daba era que al estar el eje Y arriba las figuras desaparecían. Al final el script quedo de esta forma:
 

{
    public float speed;
    void Update()
    {
        transform.position += Vector3.forward * speed * Time.deltaTime;
    }
}

@lightbug Mas adelante en el tutorial, se menciona de usar el mismo código que mueve el láser, para mover los asteroides, pero con los modelos de los asteroides el problema no existió, me dio curiosidad y realice un ejercicio donde colocaba el script para distintos objetos.
Parece ser que el problema solo existe para los Quads.
anexo el vídeo donde de izquierda a derecha se encuentra:

Quad-Planar-Esfera-nave(jugador no se mueve) sobre la nave esta el laser hecho por un Quad-nave como objeto-asteroide como objeto-Cubo.

https://www.youtube.com/watch?v=Ii6aJEqstUI

Como verán los únicos que me dan problemas son los quads, anexo las características de los 2 Quads, y la esfera. No se si el problema se deba a algún cambio con las funciones de unity del tutorial al mio.

En la imagen se encuentran de izquiereda a derecha:
Esfera-Láser-Quad.

Muchas gracias por su ayuda, ¡Saludos!

3.JPG

Share this post


Link to post
Share on other sites

Lo he probado exactamente como viene en el tutorial y tambien he probado a poner los gameobject como tu los tienes y me funciona perfectamente con velocity.

Creo que el problema esta en el Time Scale. Al usar velocity con el time scale reducido me ha dado la sensacion de que el movimiento no era limpio, sin embargo, al usar transform con el time scale reducido no da esa sensacion y eso puede que te haya confundido cuando te di esa posible solucion.

Prueba a modificar Edit > Project Settings > Time de esta forma:

Captura.PNG

Si no es ese el problema no sabria decirte que mas podria ser.

Share this post


Link to post
Share on other sites

@Moand Creo que no me di a entender bien, pero cuando me diste la primera posible solución funciono perfectamente, solo cambie Up por Forward por que con Up los objetos se elevaban, no avanzaban.
No hacia falta mencionarlo pero preferí hacerlo por si alguien terminaba en mi publicación buscando alguna solución a algún problema similar. 
¡Muchas gracias de nuevo por tu ayuda! :1_grinning:.

Share this post


Link to post
Share on other sites

×
×
  • Create New...