Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation on 11/29/2020 in all areas

  1. 1 point
    No consigue que funcione.¿Quaternion.Left es Quaternion.Lerp? Ninguna de las dos me funciona, left no lo reconoce y Lerp no me deja usarlo. ¿Alguna sugerencia? Esto de los Quaterniones se me está empalagando mucho. He visto y he leído mucho sobre el tema y cada vez entiendo menos. No he encontrado ningún tutorial con ejemplos prácticos es Español, y los que he encontrado en inglés tampoco me aclaran mucho. Todos los que encuentro me aclaran mucha teoría, pero práctica cero..... Haciendo pruebas y más pruebas mi código está como sigue. Lo he puesto entero, porque no es muy extenso. De este modo la nave gira. No sé porqué hasta 180º, y tampoco sé porqué gira sobre los tres ejes. ¿Será porque la nave tiene un rigidbody? He probado a bloquear desde el inspector los ejes z e y, pero siguen girando. using System.Collections; using System.Collections.Generic; using UnityEngine; public class Barra : MonoBehaviour { public float velocidad = 40.0f; Vector3 posicionInicial; Quaternion rotacionInicial; public float tecladoHorizontal; //float rotacion; void Start() { posicionInicial = transform.position; rotacionInicial = transform.rotation; } public void Reset() { transform.position = posicionInicial; transform.rotation = rotacionInicial; } void Update() { tecladoHorizontal = Input.GetAxisRaw("Horizontal"); float posX = transform.position.x + (tecladoHorizontal * velocidad * Time.deltaTime); transform.position = new Vector3(Mathf.Clamp(posX,-34.42f,34.42f), transform.position.y, transform.position.z); Quaternion rotActual = transform.rotation; if (tecladoHorizontal == 1) { rotActual.x +=0.05f; transform.rotation = rotActual; } else if (tecladoHorizontal == 0) { transform.rotation = rotacionInicial; } else if (tecladoHorizontal == -1) { rotActual.x -= 0.05f; transform.rotation = rotActual; } } } Bueno, finalmente he conseguido el efecto que quería después de mucho trasnochar. Parece mentira como me ofusco algunas veces en tonterías.......... el problema principal era que no estaba rotando el eje que era. Estaba tratando de rotar X, cuando en realidad era Z. Adjunto el código definitivo por si le es de utilidad a alguien. Es el mismo que el anterior, pero en la parte del if va lo siguiente: if (tecladoHorizontal == 1) { transform.eulerAngles = new Vector3(0, 0, 80); transform.rotation = Quaternion.Lerp(rotActual, transform.rotation, 1.5f * Time.deltaTime); } else if (tecladoHorizontal == 0) { transform.rotation = rotacionInicial; transform.eulerAngles = new Vector3(0, 0, 90); transform.rotation = Quaternion.Lerp(rotActual, transform.rotation, 10.1f * Time.deltaTime); } else if (tecladoHorizontal == -1) { transform.eulerAngles = new Vector3(0, 0, 100); transform.rotation = Quaternion.Lerp(rotActual, transform.rotation, 1.5f * Time.deltaTime); Muchas gracias a todos y sobre todo a tí Francoe1 por tomarte la molestia de responder.
×
×
  • Create New...