Forma correcta de rotar el objeto después de instanciarlo en unity
– UnityAssets3Free
buenas , me llamo Juan y hoy os traigo
esta pregunta
Así que estoy haciendo un tirador de arriba hacia abajo y quiero que las balas se alineen con la dirección en que se disparan. Estoy pasando la dirección al instanciar el marcador (código a continuación) y aplicarlo en el evento de inicio, pero no gira. Sin embargo, se aplica cuando lo uso en el evento Actualizar, lo que indica que el valor realmente se pasa, pero de alguna manera el evento Inicio no puede rotar el objeto. También probé el evento OnEnable y lo mismo, parece ineficiente establecer la rotación en cada evento de actualización, ¿cómo puedo solucionarlo?
[SerializeField] private float speed = 1f;
public Vector3 direction = Vector3.forward;
private float distanceTravelled = 0f;
void Start()
transform.LookAt(direction);;
void Update()
transform.position += speed * Time.deltaTime * direction;
distanceTravelled += speed * Time.deltaTime;
if (distanceTravelled > range)
Destroy(gameObject);
1 respuesta 1
Creo que lo arreglé, si hay una solución mejor, házmelo saber 🙂 Utilicé la función Invocar, parece retrasar la rotación lo suficiente como para que se aplique correctamente.
[SerializeField] private float speed = 1f;
public Vector3 direction = Vector3.forward;
private float distanceTravelled = 0f;
void Start()
Invoke(nameof(SetForwardVector), 0f);
void Update()
transform.position += speed * Time.deltaTime * direction;
distanceTravelled += speed * Time.deltaTime;
if (distanceTravelled > range)
Destroy(gameObject);
void SetForwardVector()
transform.LookAt(direction);
nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias
eso es todo,espero que te halla servido