Categorías
Informática Universitario Videojuego

Simulación física

Unity ofrece un motor físico propio, así como otras soluciones que ayudan a controlar el movimiento de los agentes, como el controlador de personajes.

Esta lección está muy relacionada con la de movimiento automático (los NPCs se mueven automáticamente, e incluso a veces los personajes del jugador también, por ejemplo en un juego de movimiento point and click).

Proyeccción de rayos

Una técnica muy útil para anticiparnos a las colisiones o detectar proximidad es la proyección de rayos (Physics.Raycast). Lo más básico es establecer un punto de inicio y una dirección en la que proyectar: Physics.Raycast(transform.position, transform.forward)

Si se quiere evitar detectar disparadores (triggers) que no suelen ser obstáculos sólidos hay que incluir QueryTriggerInteraction.Ignore así:
Physics.Raycast(ray, out RaycastHit hit, Mathf.Infinity, Physics.DefaultRaycastLayers, QueryTriggerInteraction.Ignore)

Capas

Cuando se usan técnicas para anticiparnos a las colisiones como la proyección de rayos o el solapamiento de esferas (Physics.OverlapSphere), se trabaja con máscaras de capas. Esto permite, por ejemplo, ignorar todos los objetos del juego salvo aquellos que pertenecen a una o varias capas determinadas.

Si por ejemplo quieres que la proyección de rayos sólo detecte el suelo podrías tener esta variable (para que selecciones la capa «Ground» en el inspector):
public LayerMask groundLayer
Y luego usas esa máscara al hacer el raycast:
Physics.Raycast(ray, out hit, Mathf.Infinity, groundLayer.value)

¡Cuidado con los diferentes métodos que tiene LayerMask!, ya que algunos como NameToLayer reciben una cadena de caracteres y devuelven únicamente el índice de esa capa, y otros como GetMask reciben una o varias cadenas de caracteres y devuelven la máscara de capa (esos 32 bits que indican si hay que considerar o no cada una de las 32 capas que admite Unity), que es lo que sueles querer usar.

Más información

Para complementar es recomendable consultar otros documentos:

Esta página está licenciada bajo CC BY-NC-SA 4.0 por Laboratorios Narratech.