Jump to content

Search the Community

Showing results for tags 'boxcast'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

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

Blogs

There are no results to display.

There are no results to display.


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 1 result

  1. La intro: Hola, he realizado una prueba que me ha sido útil en el proyecto que estoy haciendo y ya que estaba muy ocupado quería compartir los resultados obtenidos . La cuestión es así, hace ya un tiempo que estoy diseñando un Character Controller 2D 100% kinemático (osea sin rigidbodies dinámicos, puede operar también sin rigidbody, el componente está ahí por si se quieren usar triggers y demás... pero NO es "necesario"), es decir que la detección de colisiones se realiza a mano, mediante disparar rays, spheres, boxs, o lo que sea que ayude a determinar que objeto se interpondrá en el camino del personaje, y en base a ello desplazarlo. Dentro de la parte de CollisionDetection tengo la opción (desde que lo arranqué) de elegir por RayCast (con rays horizontales y verticales) o por BoxCast (con la opción del grosor de la caja a disparar). La ventaja clara de la caja es que barre en toda su longitud (osea no quedan agujeros), un boxcast equivale a hacer un sweep de rays (refiriendome al resultado , NO al método!!), entonces te permite muchisima más precisión (que sea o no necesaria es otra cuestión). -> De aquí la pregunta que me hice, por que sigo incluyendo el raycast? será que el rayCast es "performance-friendly" cuando la caja, a expensas de su precision/resultado te asesina?... La demo: La demo consiste en instanciar una cantidad X de cubitos (los personajes de prueba que estoy usando) inmóviles (para esta demo) que solo están "Casteando" sin sentido a los 4 lados (Norte sur este oeste), la idea principal es medir de alguna manera quien gana en precisión (obviamente el boxcast) y en performance (suprise motherf...) . El otro propósito de esta demo es la de demostrar que no hay que tenerle miedo al raycast, mucha gente piensa que podés tirar maximo diez, en las pruebas que realicé con esos cubo/personajes logré alrededor de 60 fps disparando algo así como 15000 rays! en una PC de gama media/baja (mas baja que media ), y por supuesto sacando de lado que para cada resultado de la colision se calculan/aplican otras cosas más, senos, cosenos, tangentes, arcotanges, y demás (útiles para el character controller). Claro que eso no justifica tirar rays o de más, sobre todo si estás en dispositivos moviles, pero tampoco hay que temerles tanto. De acá se puede descargar por si quieren probar ustedes mismos: https://drive.google.com/open?id=1_YgnuT3NEWFoLJVPSskXwbRekLpmSjpT E, R y T cambian de método Click : instanciar 1 Personaje M : Instanciar 100 personajes Enter : Full reset Escape : Salir Puede existir algun que otro bug, sobre todo porque estoy remodelando el tema del controller y las colisiones, pero para el objetivo de este test son irrelevantes. Los Resultados (FPS): - Obviamente sin Vsync y usando la Build, en Editor los valores grandes bajan mucho más, los valores mayores a 50 se mantienen parecidos, lo cual es lógico por el mismo overhead del Editor - Sacar de lado que se usa OnGUI para redibujar la GUI (FPS + instrucciones) y que además las strings se concatenan con el "+=" (estaba muy pancho), todo en conjunto forma el asignador de GC allocations por preferencia de Unity (6.2 KB ), así que no se que tan mejor pueda ir la cosa si se hace bien, pero tampoco es que sea crucial esto para esta prueba en específico. - Los valores extremos que se ven de 1 a 50 personajes son totalmente lógicos, quieren decir que la parte de colision del método no influye en nada frente a otros posibles factores: networking, gráficos, AI, luces, físicas, FX's, ---> intencionalmente no hay ninguno de estos , tener en cuenta que la escena es 2D, sin nada, solamente el raycast/boxcast afecta el rendimiento: Al agregar de a 100 de golpe (naranja = Physics , celeste = Scripts , verdoso (?) = GC) Como se puede ver el BoxCast funciona mejor a nivel fps y además se comporta mejor para casos extremos como el siguiente (no que sea útil en un juego real, pero andar va a andar bien): La Conclusión: Es muy probable que tire la opción del Raycast a la basura ya que: Se comporta peor en todo sentido. Está bien que no tiene sentido tener 400 jugadores, pero debería ser mejor que el boxcast (por lo menos en performance) para , no se, 10 jugadores en pantalla? (un escenario bastante real player + npc's por ej), y no lo hace. Programar la caja es mucho más rápido y fácil. No conozco otros Character Controllers basados en BoxCast.
UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...