Jump to content
UnitySpain

Aceptamos donaciones vía Paypal.

UnitySpain.com es un servicio gratuito, pero mantener la Comunidad conlleva una serie de gastos.

Fondo Anual Unityspain: Donados 58,34€ de 150,00€

  • Servidor: Dominio.com y Hosting Web
  • Mantenimiento de los Foros
  • Contenido y Servicios Extras
  • Mantenimiento para Redes Sociales

megaPRO

Registrados
  • Content Count

    42
  • Joined

  • Last visited

  • Days Won

    1

megaPRO last won the day on August 17

megaPRO had the most liked content!

Community Reputation

8 Neutral

About megaPRO

  • Rank
    Usuario

Profile Information

  • Especialidad
    Artista

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Perdona, llevo unos dias liado... Lo he solucionado bajando la resolucion en el modo NO VR con Screen.SetResolution(630,360,true); 25-30fps La resolución minima en modo VR la he tenido que dejar a 1920x1080 sino, hace exactamente el mismo defecto visual que el FIXED DPI , por lo que sospecho que son dos caminos distintos pero que llegan al mismo destino. No he encontrado forma de acceder a esos parametros tampoco. Saludos. Jesus
  2. Pos eso será que no se puede, llevo dias y no encuentro nada, tampoco en las answers de unity.... Quizas se puede lograr el mismo efecto, osea que vaya mas fluido de fps si fuerzo la resolucion de ancho y alto a mas bajas? Me he creado un menu de QualitySettings y en la más baja no sube de 18 fps, y si la escalo con FIXED DPI a 150 sube a 30fps. De ahí que quisiera hacer eso, pero tengo que poder cambiarlo, para el modo VR, pues sino, en pantalla sale un trocito solo, al ser escalado. Saludos. sigo ...
  3. Hola, Nadie lo sabe o simplemente es no se puede? Saludos. Jesus.
  4. Bueno, Pues lo he resuelto de la siguiente forma: public void PositionMenuExitVR() { // Le asigno la posición del player al Menu Exit MenuExit.transform.position = TargetPosVR.transform.position; // Asigno la rotación del Player al Menu Exit MenuExit.transform.rotation = TargetPosVR.transform.rotation; // Muevo el Menu Exit hacia delante para que sea visible al Player MenuExit.transform.Translate(Vector3.forward); } Gracias por la ayuda, @iRobb e @Igor La solucion que aplicas @Igor es interesante, supongo que aplicas algun transform.LookAt o algo así, el caso es que el menu que saco, es el de Salir, y volver al menu de inicio, y necesito que sea rapido encontrarlo, y no ir a una posición en concreto, que me guardo la idea.Gracias tambien. He estado mirando que son los Quaternions... despues de unos cuantos videos, al cual más gracioso, en fin... aún creo que no se si realmente existen....hahaha, habrá que ponerse, de momento soluciono la papeleta así, aunque no tenga todo el control, y sea una forma chapucera de conseguir lo que buscaba. Como lo habrias resuelto con los Quaternions @iRobb? La verdad es que entre numeros imaginarios, y reales, ya solo me faltaban los Quaternions... Saludos. Jesus.
  5. A ver si me podeis echar un cable, que ya ando espeso. Quiero poner un menu flotante en World Space, que se controla con el tipico puntero Gvr Pointer Physics Raycaster, el tema es que me estoy peleando con los vectores, y como existe rotación en el Player, no consigo posicionarlo delante del Player. Tengo hecho este metodo al que llamo para actualizar su posición, en el que queda orientado como el player y en la posición del player, pero tengo que mover el player hacia atras para poderlo ver. Si pudiese sumar el vector en la direccion de donde esta mirando, ese seria una opción. La otra que se me ocurre, es mover al player cada vez que saque ese menu o cualquier otro hacias atras, que tampoco lo se hacer, y quedaria chulo ese efecto. Os dejo el codigo: GOExit es el menu y el TargetPosVR es en este caso el Player. public void PositionMenuExitVR() { float relativo = 1f; Vector3 position = TargetPosVR.transform.position; Vector3 rotationMenu = TargetPosVR.transform.eulerAngles; GOExit.transform.position = new Vector3(TargetPosVR.transform.position.x, TargetPosVR.transform.position.y, TargetPosVR.transform.position.z); GOExit.transform.eulerAngles = new Vector3(0f, rotationMenu.y, 0f); } Me voy a tener que empapar de vectores... Saludos. Jesus
  6. Te aconsejo que hagas esto, desinstala Android Studio y Unity 2019, e instala de nuevo Unity, desde Unity Hub, añadiendo los SDKs y nos cuentas., si te funciona.
  7. Hola, creo entender que te falta que instales Android? Si es eso, debes ir al lanzador que tengas, si es de la propia versión de Unity o como dice @iRobb si instalaste desde Unity Hub, que es un multilanzador propio. Me da que no tienes instalada la plataforma Android. Saludos. Aqui pudes ver si lo haces desde UnityHub:
  8. Hola, Tengo mi app android que la lanzo desde un menu inicial en modo VR y no VR, en este ultimo, he notado que si escojo el Resolution Scaling Mode en Fixed DPI, en 150, la aplicacion va fluida. Si dejo ese dato tal cual, y escojo la opcion Gafas VR, al estar escalado, se va todo al garete. Y si escojo en Resolution Scaling Mode , Default, van las dos versiones correctamente, pero a muy pocos frames.... Pregunta; Se puede cambiar en runtime en modo Android, el apartado de Resolution Scaling Mode de Default a Fixed DPI (150) desde Script? Esta opción está en el Player Settings, en Resolution and Presentation. https://docs.unity3d.com/es/current/Manual/class-PlayerSettingsAndroid.html No encuentro una respuesta clara en la documentación, pero como es Editor, supongo que en runtime no se pude, que es lo que me huelo. Me lo confirmais? Si no se puede hay alternativas a hacerlo de diferente manera? Saludos y gracias por leerme de antemano. Xus, Me dejo aquí lo que he ido probando. De la documentación estraje esto; Resolution Scaling Mode Allows you to set the scaling to be equal to or below the native screen resolution. FixedDPI Allows you to scale the device’s screen resolution below its native resolution and show the Target DPI property. Use this to optimize performance and battery life or target a specific DPI setting. Disabled Ensures that scaling is not applied and the game renders to its native screen resolution. Target DPI Set the resolution of the game screen. Unity downscales the game screen to match this setting if the device’s native screen DPI is higher than this value. The scale is calculated as min(Target DPI * Factor / Screen DPI, 1). The Factor is controlled by the Resolution Scaling Fixed DPI Factor on the Quality window. Note: This option only appears when the Resolution Scaling Mode is set to Fixed DPI. Se puede cambiar el Factor, desde : QualitySettings.resolutionScalingFixedDPIFactor = 0.5f; Que no es lo que busco exactamente. Saludos. Jesus Sigo. Lo que realmente se cambia con el factor es en este apartado;que tampoco es que se luzcan mucho en explicaciones, https://docs.unity3d.com/ScriptReference/QualitySettings-resolutionScalingFixedDPIFactor.html Que te lleva a aqui, donde https://docs.unity3d.com/Manual/class-QualitySettings.html Donde ese es el Valor que realmente cambia, El ResolutionScaling, pero no el Target DPI, que es el que busco acceder, aparte naturalmente de lo que nombro al principio, el MODO, de Default a Fixed DPI. Saludos. Jesus
  9. @iRobb Muchas gracias , como ya empieza siendo habitual, gracias gracias... he modificado el movimiento en el Update para que sólo si el forward tiene valor actue, tanto para ir hacia adelante como para ir hacia atras, por que sino, la locura... aunque es divertido el modo vuelo. if (Input.GetAxis("Vertical") >= 0) { this.transform.Translate(movement, Space.World); } if (Input.GetAxis("Vertical") <= 0) { this.transform.Translate(-movement, Space.World); } Además he añadido una entrada en el Input para que modifique el valor speed entre lento(1f) y rapido (3f) de momento asi, me basta. Hace lo que queria, aunque ahora queda ligado el eje de altura a que haya movimiento como condición para que cambie de altura. Eso lo he arreglado añadiendo justamente que lo haga en el Update. // actualiza posición Altura GameObject Parent RbFPC.transform.Translate(0f, height, 0f); De nuevo gracias por contestar, llevaba tiempo queriendolo resolver. Como puntillita quiero averiguar porqué en el Editor me funcionaba y en la build hace el desfase, si no es molestia estaria muy atento a tu interpretación como me comentas. Un saludo. Pdta. Adjunto Scrip para quien quiera usarlo. Dron.cs
  10. Pues, una mm para mi, aunque en el Editor funcionaba, con la emulacion de GvrEditorEmulator, en la Build, nanai... Alguna luz por donde alumbrar? Saludos.
  11. 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.
  12. Me alegro, era una de las cosas que tambien prové yo, solucionado pues. Saludos.
  13. Mirate la solución que a mi me ha servido. A ver si tambien tenias activada esa opcion. Saludos.
  14. Hola, De primero otra vez gracias a todos. Entiendo, que las directivas que pueda definir no pueden cambiarse en tiempo de ejecución, por lo que #define, no se puede aplicar tal como yo queria, osea que descarto esa opcion. Es decir que si la defino y hago la compilación funciona, pero debo cambiarla y compilar de nuevo, que es lo que hacia hasta ahora con MOBILE_INPUT y eso me lleva a hacer dos apps separadas que es lo que intento evitar. Gracias por las aclaraciones. Lo que busco es que el codigo se ejecute o no, segun haya escogido una opción u otra, es decir por el valor de una booleana, ya me serviria, y donde tengo la dificultad es en acceder a ese valor, como comenta, @Pistaxo21, eso lo habia probado anteriormente y no logré que me funcionara, intento acceder desde los scripts de RigidbodyFirstPersonController.cs y desde el MouseLook.cs, que son los que debo modificar su codigo en Runtime y siempre obtengo error, este: Assets\Standard Assets\Characters\FirstPersonCharacter\Scripts\RigidbodyFirstPersonController.cs(15,21): error CS0246: The type or namespace name 'VariablesXus' could not be found (are you missing a using directive or an assembly reference?) o este, Assets\Standard Assets\Characters\FirstPersonCharacter\Scripts\RigidbodyFirstPersonController.cs(51,20): error CS0103: The name 'VariablesXus' does not exist in the current context E igual desde el MouseLook.cs, que deduzco que no se ven, y que aunque las ponga estaticas, o las ponga publicas y las enlace, no son accesibles. No se si me dejo algo o no se puede desde esos scripts. Si se puede y me arrojais algo de luz, intentaria ese camino, pero creo que ya se la respuesta. La solución de @iRobb, y te contesto, experiencia como coder, algo más de un año, a palos, es decir, autodidacta 120%, por lo que me considero aprendiz novato, pues he ido aprendiendo segun iba necesitando, por lo que soy consciente que muchos conceptos, como las directivas, que entiendo que son de nivel 1, pues no las tengo del todo claras, ahora, quizas un poco más claras, sí. El crear dos Gameobjects con su Rigidbody y su controlador, tambien lo habia intentado al principio, pero aún no tenia claro que podia duplicar la Clase RigidbodyFirstPersonController y simplemente renombrarla a RigidbodyFirstPersonControlleB , modificando cada uno para los controles, y despues usarlos para activar el que necesitara, como bien apuntabas, y no seguí ese camino. Además creia que la clase MouseLook, que tambien debo duplicar, no se podia hacer , cosas de mi cabeza, que os voy a contar, nací asi , hahaha. Quizás es por lo que, aunque vengo de la parte artistica, como modelador y animador, tengo que reconocer que los retos que se me plantean cada dia a nivel de codigo , són lo que más me gusta, aunque sea un negado, que soy el primero que lo reconoce.Bueno, después del tostón, voy a ver si lo resuelvo. Os comento por este hilo si lo he conseguido.
  15. Primero, gracias a todos por las respuestas. Cada dia que aprendo algo, me doy cuenta de que me faltan un par de vidas más para saber todo lo que quiero, en fin...hahaha. Yo, enfocando mal? hahaha, por supuesto. Siempre voy aprendiendo a palos... entre lo que creo que es y lo que verdaderamente es, normalmente hay UN MUNDO. risitas.... Gracias por contestar a todos, al turrón. Explico mi objetivo, a ver si lo replanteais de otra forma y yo me hago entender. Estoy creando un menu de inicio, de donde se puede escoger la App en VR y sin VR, eso ya lo tengo resuelto. La cosa se me complica, mas que nada por ignorancia, por supuesto, cuando toco la clase que controla el FPS, en este caso el RigidBodyFirstPersonController.cs, pues, varia la forma de controlar al personaje al ser VR o no VR, el tema es que no puedo crear dos RigidBody, no? . la cosa la tengo así; 1. Para VR se controla el avance desde un Joystick Bluettoth, y el tipico puntero con la mirada. 2. Para cuando no hay VR, he colocado dos joysticks virtuales Touch, en la propia pantalla. Igual me complico, pero al tener que haber solo un RigidBody, necesito que parte del codigo se ejecute y otra parte no, para mostrar una UI u otra y los controles. Lo consigo, si manualmente hago activar o desactivar desde el menu el MOBILE_INPUT, antes de lanzar la build, pero ni idea de como hacerlo desde Script y no sé encontrar nada definitivo por internete que me lo resuelva. Uso el para el codigo NO VR en el RigidBody: Miraré esas opciones que me dais. La cuestion es como le doy el valor de true y false a una variable si la defino como me comentais. Saludos y mil gracias, esto de aprender a palos duele....hahahah
×
×
  • Create New...