4.3.10 Bumper

Sin valoraciones

4.3.10 Bumper

Una entidad con un componente Bumper se mueve linealmente en la dirección en la que mire. Cuando este componente detecta que ha colisionado con un obstáculo, cambiará de sentido.

El componente Bumper cuenta con un sensor interno situado en la parte delantera del objeto, con una longitud personalizable. Este sensor se activará cuando colisione con un obstáculo, cambiando el sentido del movimiento y haciendo que la entidad vuelva sobre sus propios pasos. Al contrario de lo que sucedía en el comportamiento Pacer este componente sí permite a la entidad caer desde una plataforma e incluso precipitarse al vacío.

Atributos de configuración

  • (Float) Movement speed: Velocidad en unidades de Unity por segundo a la que se mueve la entidad.
  • (Float) Detection range: Rango en unidades de Unity en la que se va a revisar si se ha colisionado con un obstáculo.

4.3.11 Orbit

Un enemigo con el componente Orbit girará en torno a un punto fijo con un sentido personalizable. Este giro se efectúa cuando el enemigo se encuentra en el extremo del área del círculo, cuya posición y radio se puede modificar fácilmente en el editor como se muestra en la Figura 4.9. Si el enemigo se encuentra más alejado del círculo, se moverá hacia él mientras gira, de nuevo en el sentido elegido, hasta entrar en el extremo del área del circulo. La velocidad a la que el enemigo va a moverse hacia la órbita, en el caso de se sitúe al objeto fuera del área, viene dada por la velocidad de atracción. Por otra parte, la velocidad dentro de la propia órbita viene determinada por la velocidad de rotación.

4.3.10 Bumper

Figura 4.9: Componente Orbit Atributos de configuración

  • (Vector2) Orbitational center: Centro del movimiento orbital
  • (Float) Radius: Radio de la esfera sobre la que se orbitará.
  • (Float) Attraction speed: Velocidad a la que la entidad se aproxima a la órbita
  • (Float) Rotation speed: Velocidad a la que la entidad se mueve por la órbita.
  • (Bool) Rotate clockwise: Determina si el objeto girará en el sentido horario, o anti­horario.
  • (Bool) Collide with terrain: Determina si el objeto colisiona con su entorno o no.

4.3.12 Combinación de componentes

La mayoría de componentes se mueven de forma física, mediante el uso de fuerzas, y ello les permite combinarse. Algunos comportamientos funcionan muy bien juntos de forma natural, mientras que otros componentes pueden trabajar juntos pero con una serie de limitaciones, teniendo un componente que los coordine. No obstante, algunas combinaciones pueden no tener sentido desde el punto de vista del diseño de un enemigo, porque dan lugar a movimientos poco naturales u óptimos, o que sencillamente no se pueden combinar.

4.3.10 Bumper

Figura 4.10: Combinaciones de componentes posibles

Combinar comportamientos simples es muy útil para crear la ilusión de que los enemigos se mueves de forma realista, sofisticada y de una manera razonable. Pero existen unos límites: hay componentes que, sencillamente, no encajan bien juntos. Por ejemplo, si se tuvieran dos componentes en un enemigo y uno dictase que quiere avanzar en una dirección, y el otro componente hiciera lo mismo en la dirección opuesta el resultado sería que uno ejercería más fuerza que el otro o que sus fuerzas, de tener la misma magnitud, se acabarían anulando. Sea lo que fuere, el comportamiento resultaría tosco y poco eficiente si actuasen a la vez.

videojuegos

4.4 Sensores

La clase Sensor es una clase de la que heredan todos los sensores de esta herramienta, como se aprecia en la Figura 4.11. Esta herencia supone que todos los sensores obtienen los atributos y métodos de esta clase padre, por tanto la clase sensor contiene la parte común de todos los sensores, junto con todas las funcionalidades iniciales. Cuenta con un flag para desactivar los componentes a la salida del sensor, lo que quiere decir es que la lista de componentes que se activan cuando el sensor detecta al jugador pasarán de nuevo a ser desactivados cuando el sensor activo deje de detectar al jugador. Es posible que dos sensores coexistan en un objeto, pero si se quiere desactivar los componentes esta opción tiene que estar activa en cada uno de los sensores, en el caso contrario no se desactivarán porque uno de esos sensores lo mantiene activo. Estas características las gestiona la clase sensor, pero una clase sensor por si misma no hace nada porque no tiene una forma de recoger eventos del entorno.

4.3.10 Bumper

Figura 4.11: Esquema de los sensores

Los sensores son elementos que proporcionan a las entidades una capacidad sensorial con el entorno. Son los elementos que detectan ciertas condiciones en el mapa, y son capaces de activar componentes cuando detectan a su objetivo. Los componentes que se activarán en caso de detectar al jugador serán todos los componentes de movimiento que tenga la entidad, que previamente se habrán desactivado al iniciar la aplicación. Además, en los enemigos que se mueven por físicas se desactivará el efecto de la gravedad sobre los mismos para evitar que se caigan por su propio peso al inicial la aplicación y tener sus componentes de movimiento desactivados.

Al inicio de la aplicación, los sensores recorren la lista de componentes del objeto al que están asociados y, automáticamente, los desactivan. Estos componentes son añadidos a una lista aparte para activarlos si el sensor es activado, de forma que cuando el sensor haya detectado al jugador sea capaz de recordar los componentes que ha desactivado y volver a iniciarlos para activar sus comportamientos.

Los sensores tienen formas distintas de detectar al jugador, pero todas tienen en común la habilidad de activar componentes cuando lo detectan. Es posible marcar una opción en los sensores para que en el caso de que el sensor esté activo, si dejan de detectar al jugador desactiven los componentes de movimiento que previamente fueron activados. Es posible colocar más de un sensor en una entidad, debido a que los sensores sólo anulan los comportamientos de movimiento. Además, cada sensor cuenta con una lista privada de movimientos a activar por lo que no existe una dependencia entre sensores: simplemente se activarán los componentes más de una vez. No obstante, si se desea desactivar los componentes cuando el jugador deje de ser percibido es indispensable marcar la opción en todos los sensores. En el caso contrario, a pesar de que los sensores dejen de percibir al jugador, los componentes seguirán activos.

4.4.1 Range Sensor

Un range sensor, o sensor de rango, detecta la proximidad con el objetivo y activa los componentes listados si el objetivo está dentro de un umbral de proximidad. El sensor de rango funciona teniendo en cuenta la diferencia de posiciones que hay entre la entidad y su objetivo, siendo posible seleccionar un eje particular, o que sea basado en distancia simple, como se ve en la Figura 4.12.

Atributos Range Sensor

  • (Enum) Tipo de Sensor: Selecciona el eje que se tendrá en cuenta para medir la distancia o si, por el contrario, mide la distancia general.
  • (Float) Detection range: Rango de detección del sensor.

4.3.10 Bumper

Figura 4.12: Sensor de rango

4.4.2 Line Sensor

Un line sensor, o sensor de línea de visión, lanza un rayo físico constante en una dirección y con una magnitud personalizables. Como se ve en la Figura 4.13, se dibuja una línea en la escena representada por la dirección y el tamaño del vector elegidos. Cuando se inicia la escena, la línea visual se transforma en una línea física generada por el sensor y por tanto sólo responde ante colisiones con capas físicas. Para que funcione correctamente, es indispensable que el jugador tenga una capa física asociada, y es recomendable que sea una exclusiva para este. Como se explicó en el apartado de arquitectura básica, la clase Enemy Engine es la que gestiona las capas de colisión y, por tanto, este componente preguntará a la clase Enemy Engine que tenga la entidad por la capa física correspondiente.

Atributos Line Sensor

  • (Bool) See through walls: Determina si el sensor de línea de visión puede ver a través de las paredes o no.
  • (Vector 2) Line direction: Define la dirección que tendrá el rayo.
  • (Float) Line distance: Distancia de la línea de visión.

4.3.10 Bumper

Figura 4.13: Sensor de línea de visión

4.4.3 Area Sensor

Un área sensor, o sensor de área, es un espacio de dimensiones personalizables que sabe detectar si el jugador está en ella. Cuando el jugador entra en estas zonas invisibles se activan los componentes de movimiento asociados al jugador. De la misma manera, si se desea desactivar los componentes y el jugador abandona la zona se desactivarán todos los atributos de movimiento.

videojuegos

Como se puede apreciar en la Figura 4.14, el área de detección se puede colocar a voluntad gracias al vector de posición local, que sitúa el área tomando como referencia a la entidad. A pesar de que el área aparezca cuadrada, el tamaño es fácilmente personalizable gracias al vector de tamaño. Como sucede en todos los gizmos, los cambios se ven reflejados según se efectúan.

Atributos Area Sensor

  • (Vector 2) Local Area Position: Determina la posición local del área, que por defecto es la posición de la entidad.
  • (Vector 2) Area Size: Determina el ancho y el alto del área.

4.3.10 Bumper

Figura 4.14: Sensor de área

Compártelo en tus redes

Share on facebook
Share on twitter
Share on linkedin
Share on pinterest

Valore este curso

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Utilizamos cookies para asegurar que damos la mejor experiencia al usuario en nuestra web. Si sigues utilizando este sitio asumimos que estás de acuerdo. VER