Jump to content
UnitySpain

Search the Community

Showing results for tags 'rotacion'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Inicio
    • Proyectos
    • Offtopic
    • Unity Feeds
    • Website
  • Mesa de ayuda
    • Unity
    • Arte
    • Otras Especialidades
    • Builds & Dispositivos
  • Aportes de la Comunidad
    • Recursos
    • Eventos
    • Buenas Prácticas
  • Bolsa de trabajo & Colaboraciones
    • Ofertas y Demandas
  • Post Antiguos
    • General (Antiguo)

Blogs

  • byGui

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Especialidad

Found 20 results

  1. Hola , Mi objetivo es crear un First Person propio para modo vuelo tipo Dron en modo Cardboard, para eso me he creado un GameObject que tiene de componentes un Rigidbody, un Capsule Collider y naturalmente el Script de la Clase Dron, que ahora os pondré, además como hija, tiene un GameObject cámara para poder hacer el cabeceo en pitch (Vertical) y en yaw (Horizontal). Este es el Script: using UnityEngine; public class DronVirtual : MonoBehaviour { //Ejes private float forward; public float yaw; private float height; private float translate; //Velocidades public float forwardSpeed; public float yawSpeed; public float heightSpeed; public float translateSpeed; private float Speed; //Variable estado private bool swap = false; //Coordenadas public Transform cam; public Transform RbFPC; void Start() { Speed = 2.5f; } //Proceso continuo void Update() { //Inputs Joysticks/Mouse translate = Input.GetAxis("Horizontal") * translateSpeed * Speed;// X Axis forward = Input.GetAxis("Vertical") * forwardSpeed * Speed; // 4th Axis yaw = Input.GetAxis("Analog X") * yawSpeed * Speed;// 3rd Axis height = Input.GetAxis("Analog Y") * heightSpeed * Speed; //Actualiza con Time.deltaTime; translate *= Time.deltaTime; height *= Time.deltaTime; forward *= Time.deltaTime; yaw *= Time.deltaTime; // Asigna valor de la Cámara (Hija) de su rotacion en EulerAngles a una variable float float eixY = cam.transform.localEulerAngles.y; //Copia valor a la rotación del GameObject Padre RbFPC.transform.rotation = Quaternion.Euler (0f, eixY, 0f); // actualiza posición GameObject Padre RbFPC.transform.Translate (translate, height, forward); } } Seguimos, Lo que busco es igualar la rotación del GameObject (FPS) que es el padre de la camara, que esta como hija, cosa que realmente en datos en el inspector puedo ver que funciona perfectamente el script, veo la rotación en Y de la camara y es exactamente igual, pero que a la hora de que el FPS siga la trayectoria hacia donde estoy mirando, que debe estar pasando? estoy fallando y donde?. Unity según la documentación trabaja internamente en Quaternions, y para nosotros, o mejor dicho para mi, lo entiendo algo mejor si la rotación la veo en ángulos, soy humano. Pero, observando mientras escribo este post, llego a la conclusión que realmente lo que veo que pasa es que la camara rota a la vez que rota mi FPS, a la vez, realmente , cada grado que gira la camara , realmente está girando 2, es decir, que en cada grado que rota la camara, el FPS rota otro más, y el total es la suma de las dos rotaciones, por lo que el razonamiento que habia hecho en ese Script, al querer copiar el eje y de la cámara era incorrecto. Al ver la rotación fisicamente desde la vista superior en la Scene , me he dado cuenta de ese fallo y donde, mi lógica fallaba contundentemente, ya que en el inspector podia ver que en el giro del primer angulo recto de la camara o del GameObject Padre, como cada uno habia recorrido sólo 45º, y no 90º los 2, por lo que la trayectoria que hacia al desplazarme hacia adelante no era la visual sino justo la mitad, si es que....enfin.Mama quiero ser Artista..... y me meto a coder...hahahaha. Una vez entendido eso, he hecho esta ñapa en el control del Dron. (Script). // solucion 2 // Creo dos vector3 y les asigno los angulos de la cámara y del fps Vector3 rotacion1 = cam.transform.localEulerAngles; Vector3 rotacion2 = RbFPC.transform.localEulerAngles; //Asigno la rotacion en Y al FPS, así el FPS gira y la camara con él rotacion2.y = rotacion1.y; // Asigno la rotacion yaw al FPS RbFPC.transform.localEulerAngles = rotacion2; // Asigno el valor de la camara en su rotacion Y a cero rotacion1.y = 0f; // Asigno la rotación resultante a la cámara cam.transform.localEulerAngles = rotacion1; Tengo que probar la Build pero en el inspector ahora sí, que hace lo que le pido. Quizás los coders, me puedan decir una forma más elegante de conseguir lo mismo. Quizás con las Constrains...no se. Primero estaba asignando mal el giro en Yaw, pero es que además es en VR, que lo complica un poco más, al ser más lento el probarlo, simplemente por desconocimiento, cómo quien manda en esos ejes desde el Cardboard, es el Head, y estoy aún entiendo su funcionamiento . No se si la solucion de obligar a la camara a estar en 0f, en ese eje Y de rotación, me puede dar problemas. ya casi está el Build. Qué opinais?. Un saludo.
  2. Problema con el Giroscopio No logro hacer que se active el giroscopio, puedo hacer que un objeto se mueva a los lados: Input.acceleration.x Lo que estoy tratando de hacer es que un objeto rote con este codigo: Input.gyro.enabled = true; Quaternion rotFix = new Quaternion(Input.gyro.attitude.x, Input.gyro.attitude.y, -Input.gyro.attitude.z, -Input.gyro.attitude.w); rot.y = Vector3.Dot(Input.gyro.gravity, Vector3.up) * EscalaMovimiento; Cuando lo pruebo en el ordenador, si me permite activar y desactivar el Giroscopio (Con el Debug.log) pero cuando lo quiero aplicar en un mobil, me aparece como desactivado y no se activa... Si alguien pudiera ayudarme con esto...
  3. Muy buenas, tengo problemas con un scripts. Me sale la siguiente ventana y no madeja añadir el script a la cámara ARcamera. adjunto código también. Saludos y gracias por la ayuda! using System.Collections; using System.Collections.Generic; using UnityEngine; public class ExampleRotate : MonoBehaviour { public GameObject objectRotate; public float rotateSpeed = 50f; bool rotateStatus = false; public void Rotasi() { if (rotateStatus == false) { rotateStatus = true; } else { rotateStatus = false; } } void Update() { if (rotateStatus == true) { objectRotate.transform.Rotate(Vector3.up, rotateSpeed * Time.deltaTime); } } }
  4. Hola! Necesito algo de ayuda en realizar un script (Preferiblemente en JavaScript) para que un InGameObject (En este caso, el del jugador) pueda rotar usando el mouse en un eje, haciendo que el jugador rote de lado a lado usando el mouse, esto se utiliza en juegos como Skyrim y Oblivion cuando la tercera persona está activa, tengo una cámara orbital para el jugador que lo sigue hacia arriba y hacia abajo, también hacia los lados, y lo que quiero es que la cámara siempre muestre la espalda del jugador. Muchisimas gracias de antemano!
  5. Hola gente buenas noches, estoy trabajando en las fisicas de un motor de juegos y tengo un problema que no logro resolver, quiza la respuesta sea simple pero llevo horas con ello y no logro entender el porque. El problema es el siguiente: //Velocidad del cuerpo del personaje var v = _body.velocity; //Rota el angulo alrededor del eje y, Angle:-90 var o = Quaternion.AngleAxis(Angle, Vector3.up); //Regresa la velocidad del cuerpo rotada en el angulo inverso var rv = Quaternion.Inverse(o) * v; //Regresa la velocidad para moverse var speed = Walk.Speed //Obtiene la acceleracion y desaceleracion de camino o del aire var acc = _Walk.Acceleration; //Si se esta moviendo movement:1 speed: 5 dt:deltatime acc:20 rv.z = Mathf.Lerp(rv.z, _movement * speed, dt * acc); rv.x = 0; v = o * rv; _body.velocity = v; Ese es todo el codigo, aclaro nada mas dentro del proyecto afecta el movimiento del objeto y su rotacion es de -90 grados igual que Angle, pero cuando la posicion inicial del objeto esta en 0 en el eje Z, se mueve tanto en x como en z y cuando tiene una cantidad en la posicion inicial del eje Z se mueve solo en x. Si alguien tiene alguna respuesta para esto se lo agradeceria mucho.
  6. hola }soy muy noob, estoy creando un objeto que debe mostrar un texto si rota en vertical, pero si rota arriba con el mouse hace una cosa, sino otra, no se como el drag con el mose se llama si rota hacia arriba y abajo
  7. Hi de nuevo gente Pongo aquí un problemilla que estoy teniendo con una chorraíca. La idea es asignar a una variable el valor de rotación de un objeto, esto es lo que tengo, pero claro esta no funciona ^^' public int Rotate; void Start () { Rotate = GetComponent<Transform>().Rotation.X; } void Update () { if (Rotate > 50) { Debug.Log ("Rotacion"); } }
  8. Holas. Tengo un problema :( Supongamos que en la ventana Scene ajusto la rotación del player, de modo que cuando se inicie el juego, él comience mirando hacia 'x' dirección... Bueno, pues resulta que al iniciar el juego, el jugador ignora la rotación que yo le asigné y en su lugar se orienta hacia el eje Z... siempre. Mirad esta pequeña secuencia de ejemplo. Este es el script del jugador: using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerMovement : MonoBehaviour { private static CharacterController _cc; private static float _currentSpeed = 2f; private static bool _canMove = true; public static CharacterController CC { get { return _cc; } set { _cc = value; } } private void Awake() { _cc = GetComponent<CharacterController>(); } private void Update() { float hAxis = Input.GetAxis("Horizontal") * _currentSpeed; float vAxis = Input.GetAxis("Vertical") * _currentSpeed; Vector3 movement = new Vector3(hAxis, PlayerJump.Gravity, vAxis); movement = transform.rotation * movement; if (_canMove) _cc.Move(movement * Time.deltaTime); } } A ver si alguien me echa el guante. Muchas gracias, de verdad (:
  9. hola a todos, estoy trabajando en un proyecto y se me ha presentado un problema con la inteligencia artificial de un enemigo, lo que sucede es que cuando cambia su animacion de normal a ataque este genera una rotacion en X que no deberia tener, ya revise la animacion y esta no tiene grabado esa rotacion por lo que no se que la esta generando, ya que en el rigidbody ya le restringi las rotaciones en X y Z. utilizo lookat() para fijar la vista en el jugador, no se hacer para que deje de rotar en x.
  10. Hola soy yo otra vez jeje, pues tengo un problema, necesito que mi personaje voltee su cuerpo si muevo la camara(no se si me explico, es un shooter en primera persona pero tengo un modelo del personaje ya que es online, entonces necesito que si el jugador mueve la camara hacia atras pues el cuerpo tambien lo haga, en pocas palabras: que el cuerpo siga la rotacion de la camara)entonces he intentado con un forward para buscar la direccion de un cubo que esta enlazado(esta de hijo) con el personaje, pero unity me dice que no puede cambiar un Vector3 a un Quaternion, entonces de que manera debo de realizarlo? es con el mismo forwad (me imagino) pero como hago que tome la direccion. El codigo que tengo es este, por cierto uso el codigo por defecto de unity (el que se llama Simple mouse rotator para que pueda moverme un poco): public Transform posicionCubo; public GameObject posicionCuerpo; void Update(){ Vector3 posicionNueva = posicionCubo.forward; posicionCuerpo.transform.rotation = posicionNueva; } Por cierto lo hago con el cubo y no con la camara ya que la camara tambien ve hacia arriba, y no quiero que el cuerpo se valla en vertical. Ojala puedan ayudarme gracias.
  11. Hola muchachos... bueno le explicare de una manera sencilla mi problema, estoy preparando un programa de mecánica para mi tesis el cual se debe basar en fallas mecánicas en rodamientos. el problema va en que debo hacer rotar un engranaje sobre su eje central, pero por algún momento me toma el centro del engranaje en una punta, no importa si le selecciono eje "PIVOT" o eje "CENTRAL", en la pantalla de SCENE me muestra que el centro de mi imagen precisamente es el centro correcto, pero al momento de la animación.... todo cambia. ya que gira sobre el eje fantasma sobre la punta antes mencionado, he revisado muchos foros y códigos, pensando que el error puede ser mio... pero en todos es el mismo resultado, gira pero no sobre su propio eje, ya intente realizar un cubo desde el programa y efectivamente gira sobre su eje central de manera normal, pero para mi tesis no me sirve un cubo, necesito un engranaje con medidas y formas especificas el cual construyo en 3D MAX, chicos les agradecería pronta ayuda... por andar tan pendiente de esto, me deje colgar del tiempo. si lo desean para mayor comodidad mi numero de móvil es (+57 305 784 5268) mi correo es (sebasangar9956@gmail.com) adjuntare screenshot, con el fin de que vean mi problema y puedan ayudarme. de ante mano gracias y si es necesario no dude, solo miren la rotacion del objeto, los errores que se muestran son por las interminables maneras que he intentado para hacer girar ese engranaje sobre su eje, los SLIDE aun no tienen ningún código. nuevamente gracias.
  12. Buenas... estoy teniendo un problema al intentar rotar mi personaje hacia una dirección pero sin la coordenada Y, y rotar los brazos hacia esa coordenada en Y ósea que los brazos sólo se mueven hacia arriba y hacia abajo. La parte de rotar el personaje sin cambiar la coordenada Y me funciona bien pero no logro rotar los brazos hacia un lugar pero sólo en Y... además necesito que se tarde X tiempo en rotar hacia esa coordenada ósea que no gire automaticamente, algún consejo??
  13. Estoy intentando que mi firstperson controller al suceder un evento (click en un botón) tome una nueva posición y rotación, el problema esta en lo segundo, la posición si la toma pero la rotación no! ayuda!!
  14. hola gente ,muy buenas paso a comentar el problema: instancia algo similar a una flecha la cual se clavara en alguna pared (por ejemplo), la flecha se clava y ya no se mueve mas.Sin embargo cuando le doy su nuevo parent el cual seria la pared la flecha parece que según el angulo en que impacte la pared, ira cambiando su angulo de caja de colisión.
  15. Hola que tal gente, primero les explico un poco mi problema; estoy desarrollando un juego para moviles con una jugabilidad algo parecida a TempleRun, el problema que tengo es que cuando llego a una esquina y girar este de un brinco ya esta viendo hacia donde gire, lo que yo quisiera hacer es que cuando gire se vea mas smooth, o sea que no gire de golpe y se vea al personaje girando un poco. El personaje usa un Character controller, seria que deba cambiar a rigidbody? Aqui esta mi script en la parte del giro: Estuve investigando y hay unas cosas que se llaman quaternion segun con esto puedo resolver el problema, pero yo no se nada de quaternion, Si alguien me explicara la sintaxis de como usar los quaterniones, o igualmente si alguien tiene una manera diferente de hacer el script estaria muy agradecido que me lo hagan saber. Un saludo a todos!
  16. [SOLUCION] A bajo del todo! Hola, estoy haciendo un juego de plataformas que cambie la gravedad cada vez que hagas click vaya por el techo o por el suelo, he hecho el scrpit para que cambie la gravedat y gire el objeto pero al rotarlo el objeto se queda desconfigurado. Aqui os dejo una imagen del problema y el scprit que tengo hecho per el momento, para que se entienda mejor el error, no siempre se queda asi mal rotado, sino que aveces gira bien, aveces no gira, aveces solo se queda desconfigurado un poco y aveces como la imagen; como si la rotacion no girara siempre con los mismos grados. Gracias. Script: using UnityEngine; using System.Collections; public class ControladorPersonaje : MonoBehaviour { public bool Gravetat = true; public GameObject StormTropper; // Use this for initialization void Start () { } // Update is called once per frame void Update () { if (Gravetat) { if (Input.GetMouseButtonDown (0)) { Physics2D.gravity = new Vector3 (0, 9.8f, 0); Gravetat = false; StormTropper.transform.eulerAngles = new Vector3 (180, 0, 0); } } else { if (Input.GetMouseButtonDown (0)) { Physics2D.gravity = new Vector3 (0, -9.8f, 0); Gravetat = true; StormTropper.transform.eulerAngles = new Vector3 (0, 0, 0); } } } } SOLUCION Buscando por internet el mismo problema pero en ingles he encontrado que para solucionarlo utilizan localScale y no el Rotate. Aqui os dejo mi script: using UnityEngine; using System.Collections; public class ControladorPersonaje : MonoBehaviour { public bool Gravetat = true; public GameObject StormTropper; private bool alTerra = true; public Transform ComprobadorTerra; private float ComprobadorRatio = 0.15f; public LayerMask mascaraTerra; private Animator animator; void Awake(){ animator = GetComponent<Animator> (); } // Use this for initialization void Start () { } void FixedUpdate(){ alTerra = Physics2D.OverlapCircle (ComprobadorTerra.position, ComprobadorRatio, mascaraTerra); animator.SetBool ("isGrounded", alTerra); } // Update is called once per frame void Update () { if (Input.GetMouseButtonDown (0) && alTerra) { if(Gravetat) transform.localScale +=new Vector3(0, -0.6681022f*2 , 0); //Pongo este numero porque mi personaje en un principio la escala enY la tiene en 0.6681022 i lo que hago es que pase a -0,66022 y viceversa//(Borrar esto) else transform.localScale +=new Vector3(0, 0.6681022f*2 , 0); Physics2D.gravity = (Gravetat) ? Vector3.up * 9.8f : Vector3.up * (-9.8f); Gravetat = !Gravetat; } } } Espero que os haya servido! Gracias a todos!
  17. Hola, Estoy tratando de modificar este script que encontré para hacer girar o rotar un objeto con el tacto. Pero lo que quiero es agregarle la función de que rote el objeto al punto de giro inicial tras una inactividad de 2 segundos. Ahora funciona la el giro pero no he logrado hacer que regrese a su punto de rotación original tras 2 segundos de inactividad. Cualquier ayuda es bienvenida! // Moves object according to finger movement on the screen var speed : float = 0.1; var rotationStart = 0.0; var rotatehome = false; var rotationSpeed = 10; function Awake () { transform.Rotate(rotationStart,0,0); } function Update () { if (Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Moved) { // Get movement of the finger since last frame var touchDeltaPosition:Vector2 = Input.GetTouch(0).deltaPosition; // Move object across XY plane transform.Rotate (0,-touchDeltaPosition.x * speed, 0); rotatehome = false; } else if (rotatehome) { transform.rotation = Quaternion.RotateTowards(transform.rotation, new Quaternion(0,0,0,0.1), rotationSpeed); } } function Return() { yield WaitForSeconds (0.5); rotatehome = true; }
  18. Estoy desarrollando para mi proyecto de grado, un audio juego virtual con implementación de sonido binaural en unity, pero para el desarrollo de las trampas, necesito disparar el sonido dependiendo de la posición y la rotacion con respecto a la trampa. les agradeceria si me pudieran ayudar, de programacion en unity no se mucho, y pues es algo urgente y estoy atento a ustedes muchas gracias.
  19. al cambiar entre el objeto first y third no hay problema alguno, solo que siempre quedan mirando hacia la misma dirección. en target1 hay un children de first que siempre queda delante del jugador. en target3 un children del objeto third que siempre queda delante de él. var first : GameObject; var third : GameObject; var target1 : Transform; var target3 : Transform; private var playerpos1 : Transform; private var playerpos3 : Transform; private var relativePos1 = target3.position - transform.position; private var relativePos3 = target1.position - transform.position; private var rotation1 = Quaternion.LookRotation(relativePos1); private var rotation3 = Quaternion.LookRotation(relativePos3); function Start () { playerpos1 = first.transform; playerpos3 = third.transform; } function Update () { if(Input.GetButtonDown("camview")){ if (first.activeSelf == true){ third.SetActive(true); third.transform.position = playerpos1.position; third.transform.rotation = rotation1; first.SetActive(false); } else{ first.SetActive(true); first.transform.position = playerpos3.position; first.transform.rotation = rotation3; third.SetActive(false); } } } ¿que está mal? ¿porque no rotan en la direccion del target?
  20. Quiero rotar la cámara, y tengo la siguiente función; private void Rotate(){transform.Rotate(0, Input.GetAxis("Mouse X") * rotateSpeed * Time.deltaTime, 0);Camera.mainCamera.transform.Rotate(-1 * Input.GetAxis("Mouse Y") * rotateSpeed * Time.deltaTime, 0, 0); }¡Funciona!, sin embargo tengo problemas con los limites, porque con esta función la cámara se puede rotar hasta niveles exagerados (Puedes llegar a rotar la cámara 360 grados), además de que si el mouse se sale de la pantalla la camara se sigue rotando como loca. Lo que quiero es limitar los movimientos de la camara, para nunca rotar demasiado, pero conservando el control del mouse.
×
×
  • Create New...