Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: enelmenu en Febrero 14, 2018, 07:44:22 AM

Título: Como evito esto?
Publicado por: enelmenu en Febrero 14, 2018, 07:44:22 AM
Buenasss
 
Mi problema es el siguiente:
Necesito agarrar puntos, yo a cada punto le puse un collider con un trigger enter que mande la señal, cuando Player pasa por encima se agarra el punto, algo simple.
 
PERO nose por que razon hay fotogramas que no los toma.... Cuando me va a pocos fps saltea puntos cuando me muevo... y no los agarra...
Aveces agarra y aveces no, como si dropeara fps y los saltea...(//%3CfileStore.core_Attachment%3E/monthly_2018_02/GIF6.gif.0292e837538de2c9e6e13b1a9fd65173.gif) (//%3CfileStore.core_Attachment%3E/monthly_2018_02/GIF7.gif.1f63cf817103a981b87adf4c9ce7fa7a.gif)
 
Yo e jugado juegos que me van a re pocos fps PERO nunca SALTEO cosas o transpaso cosas... a que se debe esto? algo mal estoy haciendo, el player se mueve con un IEnumerator, es como un update no creo que el problema sea ese.
 
Cual puede ser la solucion?
Como puede ser que lso miles de juegos a 10 fps que e jugado jamas transpase cosas... por que sucede esto? Sera unity? o que mierddddd
Agradesco cualquier respuesta, abrazo
 
Aclaro: Cuando va bien en fps toma todo correctamente, el problema es cuando tengo pocos lo probe con varias cosas abiertas y me va asi de feo, pero no deberia transpasar cosas, deberia ir todo tosqueado pero que agarre los puntos...
 
Título: Como evito esto?
Publicado por: lightbug en Febrero 14, 2018, 08:27:06 AM
Cita de: enelmenu date=1518590662Cual puede ser la solucion?

      Como puede ser que lso miles de juegos a 10 fps que e jugado jamas transpase cosas... por que sucede esto? Sera unity? o que mierddddd
   


Hello Menú, aca me parece que pueden pasar dos cosas:
 
1 - quizás en un cuadro haya más de uno de esos cubitos que ingrese a tu collider, me guio por la forma que veo en los gifs, la verdad no se como serán en tu escena, por eso puede ser que estés comiendo uno solo de los dos? no se estoy tirando por tirar.
 
Probá en vez del Ontrigger (que la verdad no se si será o no el problema) esto:
 
https://docs.unity3d.com/ScriptReference/Physics2D.OverlapBoxAll.html (https://docs.unity3d.com/ScriptReference/Physics2D.OverlapBoxAll.html)
 
o por simpleza:
 
https://docs.unity3d.com/ScriptReference/Physics2D.OverlapCircleAll.html (https://docs.unity3d.com/ScriptReference/Physics2D.OverlapCircleAll.html)
 
(o podrías usar la versión non-alloc también y ya tenés un arreglo de RaycastHit2D)
 
Estos te devuelven el resultados de todos los colliders que interceptan, y así podrías "consumirlos".
 
2 - que de un cuadro a otro vas tan rapido que terminás salteando algunos
 
Si el problema es este podés asegurarte (y matar al problema 1 también) con el método de proyección (no lo inventé yo, sí el nombre), basicamente sabés que en un cuadro te movés un delta, entonces disparás un ray (o box, da igual, están uno atras de otro) hasta la posición que deberías ir (no el punto de llegada, sino el delta de pos del frame) una vez detectas y consumis los cuadraditos, te desplazás. Es un método muy común usado en character controllers también, para evitar atravesar paredes y esas cosas de la vida cotidiana.
 
Saludos
 
 
Título: Como evito esto?
Publicado por: Javiviplz en Febrero 14, 2018, 09:33:53 AM
Si estas usando físicas, puede que debas usar el método FixedUpdate( ) en lugar de Update( ) 
Título: Como evito esto?
Publicado por: Igor en Febrero 14, 2018, 04:46:46 PM
Cita de: lightbug date=15185932262 - que de un cuadro a otro vas tan rapido que terminás salteando algunos
   
   
      Si el problema es este podés asegurarte (y matar al problema 1 también) con el método de proyección (no lo inventé yo, sí el nombre), basicamente sabés que en un cuadro te movés un delta, entonces disparás un ray (o box, da igual, están uno atras de otro) hasta la posición que deberías ir (no el punto de llegada, sino el delta de pos del frame) una vez detectas y consumis los cuadraditos, te desplazás. Es un método muy común usado en character controllers también, para evitar atravesar paredes y esas cosas de la vida cotidiana.
   


yo creo que sera eso....
 
yo en 3d lo soluciono con un raycast/spherecast... de la posicion antigua a la nueva...
 
"para evitar atravesar paredes y esas cosas de la vida cotidiana", jeje
 
porcierto, @enelmenu me gusta la estetica simple pero bonita que le has dado
Título: Como evito esto?
Publicado por: FNP en Febrero 14, 2018, 06:22:35 PM
Cuando un objeto con un collider se salta a otro collider, en muchos casos es porque las escalas son inmensas o porque estas codificando en el Update en vez de en el FixedUpdate, revisa las escalas y si son grandes, reescala todo y ponlo a 1, porque eso da guerra si o si, el problema es que al ser grandes en un fotograma el objeto está antes de la colisión y en el siguiente se calcula  cuando ya ha pasado y no se produce. Seguro que o es esto o es lo que te ha dicho @Javiviplz
 
 
 
 
Título: Como evito esto?
Publicado por: enelmenu en Febrero 24, 2018, 09:15:58 PM
@FNP 

Gracias muchachos, lo solucione con un poquito de cada uno jaja tenia muy pequeños los colliders y tenia un IEnumerator que actualizaba el movimiento, lo puse en FixedUpdate y joya, era un desastre jajaja


Abrazo!!