Estoy haciendo un juego de defensa de la torre y para evitar que los enemigos se crucen entre sí, uso un raycast para determinar la distancia entre ellos. Por ahora, todo funciona bien, pero quiero que los enemigos más rápidos puedan atravesar a los más lentos (así que solo verifique la distancia para enemigos similares). El problema es que tengo más tipos de enemigos que capas y los enemigos están todos en el mismo camino (por lo que el raycast a menudo es interceptado por el enemigo equivocado y luego se detiene. Quiero encontrar una manera de hacerlo pasar).
Ejemplo de situación:
enemigo 1 --- enemigo 2 --- enemigo 3
El enemigo 1 dispara un rayo para calcular la distancia entre él y el enemigo 3, pero el rayo es interceptado por el enemigo 2.
¿Cómo hago para que el rayo atraviese al enemigo 2 si el enemigo que lo dispara no es del mismo tipo?
Espero que mi problema sea lo suficientemente claro, si no, por favor dígamelo. Gracias por adelantado.
Para Física 2D, Physics2D.Raycast tiene múltiples sobrecargas, algunas de las cuales toman una matriz o una lista de RaycastHit2D como parámetro que la función completará rápidamente.
Para Física 3D, Physics.RaycastAll devolverá una matriz de RaycastHit . Tenga en cuenta que los resultados de esta función no estarán en orden, por lo que es posible que desee ordenar la lista resultante por distancia desde el origen del rayo.
En realidad, después de una inspección más cercana, también hay un Physics2D.RaycastAll que no conocía. He estado usando las sobrecargas de Physics2D.Raycast todo este tiempo. Tu aprendes algo nuevo cada dia.