Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Controlar los Frames segundo de un único objeto.

Iniciado por Feider, Noviembre 05, 2015, 05:27:53 PM

Tema anterior - Siguiente tema
Buenos días: Más o menos llevamos días buscando por Mr Google y bueno hemos buscado algo por aquí, pero nada cercano a lo que buscamos... ¿Qué es? Bueno, resulta que queremos hacer efectos de control de tiempo:-¿TimeScale? m''' no. Eso baja la frecuencia de los frames general y en nuestro caso queremos de un sólo y único objeto...Se nos ocurrió la idea de intentar controlar la frecuencia de frames de las físicas de un objeto... Pero no encontramos la forma siquiera de acceder ahí... La otra opción era recrear las físicas, pero dudo mucho la necesidad de hacer eso... Las físicas de Unity son majillas, si las rehago yo no creo que salieran igual de bien, quizá si las pudiera modificar (¿?)...El caso es que buscamos la manera de controlar el flujo de las físicas (o de los 3 updates) para hacer ese efecto de ralentización que buscamos...  Quizá estamos buscando mal o lo hemos planteado mal... Agradezco de antemano cualquier indicación o guía para ver por dónde poder ir. Un saludo a todos.

Noviembre 05, 2015, 06:15:05 PM #1 Ultima modificación: Enero 01, 1970, 01:00:00 AM por Antonio
El objeto que usa las físicas, imagino que estará usando el Rigidbody ( http://docs.unity3d.com/ScriptReference/Rigidbody-velocity.html ), esta clase tiene varias variables que puedes modificar si realmente lo necesitas.

Por ejemplo, la variable velocity puedes multiplicarla por un valor que descienda de 1 a 0, para así ir como parándolo. O en vez de 0, llevarlo a 0.5 para que vaya la mitad de lento. También puedes usar el angularvelocity para intentar hacer una rotación más lenta.

[quote author=Adngel" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34366" data-ipsquote-contentcommentid="123109">El objeto que usa las físicas, imagino que estará usando el Rigidbody ( http://docs.unity3d.com/ScriptReference/Rigidbody-velocity.html date=1446743705]http://docs.unity3d.com/ScriptReference/Rigidbody-velocity.html ), esta clase tiene varias variables que puedes modificar si realmente lo necesitas.

Por ejemplo, la variable velocity puedes multiplicarla por un valor que descienda de 1 a 0, para así ir como parándolo. O en vez de 0, llevarlo a 0.5 para que vaya la mitad de lento. También puedes usar el angularvelocity para intentar hacer una rotación más lenta.[/quote]La verdad es buena idea.  ¿Y cuándo deje de ralentizar el tiempo? -Da igual, sólo tengo que hacer la inversa si iba al 50% ponerlo al 100% otra vez- Pero quizá pierda muchas cosas por el camino. Pienso. No obstante, voy a intentar hacer pruebas, quizá funcione bien y haya estado miles de horas buscando equivocadamente.^,..,^. Gracias

También puedes cambiar el valor de la gravedad, que no cambiaría el ratio de ningún Update (creo que el único que está sincronizado con las físicas es el Fixed) pero puedes aumentar o disminuir la gravedad haciendo que caiga más rápido o no caiga Lo malo es que afecta a toodos los objetos que usen físicas (rigidbody) :/ si es de un solo objeto mejor será la velocity de ese rigidbody.


Estuve haciendo pruebas con el tema de la velicidad y bueno... Se me estropean las físicas, aún tengo que hacer más pruebas pero si lo consigo haré un tutorial para que haya más gente que pueda acceder a esos resultados, que en videojuegos, creo son importantes. El tema de la gravedad no es mala idea, pero no sirve por eso, afecta a todos. De todas formas no considero que la idea sea mala. XD Claro, puedo comprar esos script e intentar destriparlos, no me parece mala idea... Creo. Muchas gracias a los que respondieron ^^. 

Hola buenas no entiendo bien si lo que quieres es relentizar el tiempo en un objeto o una animacion,lo mejor sera que no pienses en frames si no en segundos,si bajas los frames bajas el numero de imagenes por segundo que se veria alterado por la rapidez de tu pc vamos que no iria igual en un pc lento que en uno rapido.luego esta el modo en que quieres que se active esa accion no se si va a ser un trigger o que,Una forma seria una variable float "speed" aplicada a un tag de ese modo todos los objetos con ese tag irian a la velocidad indicada (al pasar por el trigger;colisionar o pulsar un boton)y los otros no,otra forma seria si vas a trabajar con animaciones cambiar la velocidad de las animaciones creas un animator controller y pones diferentes velocidades a las animaciones(apply root motion on) y luego las activas o desactivas con las variables como creas conveniente.Espero que sea lo que buscas.

Quiero hacer lo mismo que hace el timscale pero en lugar de afectar a todos los objetos de escena (toda la escena) afecte sólo a lo que yo quiera que afecte. Más que animación o no. Es las físicas, para que no se me rompan pero al mismo tiempo de el efecto. ^^.-Vamos lo que aparenta el coso que pasó pioj- Un saludo. 

Quiero hacer lo mismo que hace el timscale pero en lugar de afectar a todos los objetos de escena (toda la escena) afecte sólo a lo que yo quiera que afecte. Más que animación o no. Es las físicas, para que no se me rompan pero al mismo tiempo de el efecto. ^^.-Vamos lo que aparenta el coso que pasó pioj- Un saludo. 

Como me expreso de pena e igual no entendiste bien lo que te queria decir hice un ejemplo rapido
eature=oembed" allowfullscreen="true" frameborder="0" height="270" width="480">lo que hice fue un cotrolador muy sencillo para que te orientes un poco,solo el personaje se va a mover mas lento no se va ha alterar nada de la escena,en cuanto a las fisicas el no bajarle los frames hace que tengas menos problemas ya que se va a actualizar mas rapido.Si es esto lo que quieres hacer te puedo explicar como conseguirlo.

Omoshiroi. si algo así supongo. Lo que probé de cambiar las velocidades... da un poco el pego pero a nada que haces cualquier cosa se rompen las físicas completamente:
disparo un cubo, va de X a Y recorriendo por Z, si el tiempo para ese cubo fuese más lento, haría el mismo recorrido pero tardaría más tiempo.  (Sólo ese cubo iría más despacio). sin embargo, lo que hice, hace que vaya más lento, pero en lugar de X a Y por Z, va de X a B por C. (no sé si me explico).En resumen, por ejemplo hacer lo que hiciste tu, podría seguramente dar solución perfecta a mis problemas (ni idea, aparentemente es lo que busco y no atino a hacer). Así que si, Agradecería mil saber cómo hacer lo que hiciste. Quizá sea definitivamente lo que me falte.Un saludo.

Bueno parece que lo que tu quieres hacer es mucho mas sencillo si los programadores del foro te pueden hechar una mano ( yo hace tiempo que me pase al playmaker ya que la programacion me quitaba mucho tiempo para dedicarme a otros aspectos de unity).la solucion es la siguiente:-Esa "z" que tu dices no se refiere al eje sino al recorrido¿verdad? para conseguirlo necesitas hacer un nav mesh y bankear por donde quieres que vaya tu cubo(nunca se saldra del nav mesh),luego añadir un nav mesh agent al cubo.Asi ya aseguras su recorrido.-Luego creas un script de movimiento el de toda la vida con su variable float speed(deltatime)para que que vaya a segundos y no a frames.-Esa variable es la que vas a utilizar para calcular la velocidad a la que quieres que vaya el objeto Add float mas rapido ,float Subtract mas lento-Por ultimo como la actives ya es cosa tuya las posibilidades son infinitas.Si por casualidad usas Playmaker encantado te hago el FSM.
eature=oembed" allowfullscreen="true" frameborder="0" height="270" width="480">Un pequeño tutorial sobre el nav mesh que te va a ayudar. 

Etiquetas: