Rookie Awards 2024 - Open for Entries!
The Enemy Off Puzzles
Share

The Enemy Off Puzzles

Joan Giner Pavia
by Jhonny6 on 3 Oct 2023

Enemy of puzzle is a VR game about scape resolving puzzles. You are in an apocalyptic world, trapped in a gas station area. You could think you are alone, but are you sure?

0 106 0
Round of applause for our sponsors

Este es un videojuego en VR que realice junto con otros 8 compañeros.

Antes de empezar con la explicacion del codigo del videojuego, primero vamos a poner un pequeño gameplay/ trailer.

A continuación voy a dejar un link para itch.io para que puedas descargar.

Itch.io: vallista25.itch.io/enemy-of-the-puzzle

Para este proyecto me encargue de hacer dos mecanicas, el enemigo y el candado. Vams a empezar explicando el codigo del enemigo.

Enemigo

Método Start:

En el método Start, se inicializan algunas variables y se busca el objeto del jugador por su nombre ("XR Rig PLAYER") y se almacena en la variable Player.

Método Update:

El método Update se utiliza para controlar el comportamiento del enemigo en diferentes situaciones.

Se calcula la distancia entre el enemigo y el jugador para determinar si el jugador está dentro del campo de visión del enemigo.

Dependiendo de la situación, el enemigo puede patrullar entre waypoints, seguir al jugador si está cerca o atacar al jugador si está a una distancia mínima de ataque. También se ajusta el volumen de los sonidos en función de la distancia entre el enemigo y el jugador.

Métodos UpdateDestination y IterateWaypointIndex:

UpdateDestination se utiliza para actualizar la posición objetivo del enemigo al siguiente punto de patrulla.

IterateWaypointIndex se utiliza para avanzar al siguiente punto de patrulla y controlar la transición entre la espera y la patrulla.

Corrutina espera:

Esta rutina se utiliza para hacer que el enemigo espere un tiempo antes de reanudar su patrulla. Se pausa su velocidad y se cambia su estado a "Idle" durante el tiempo especificado en tiempoEspera.

Métodos de sonido y control de animación:

Los métodos como sonidoPatrulla, sonido_Atacar, velocidad_zero, empezar_a_patrullar se utilizan para reproducir sonidos y controlar las animaciones del enemigo en momentos específicos, como al patrullar o al atacar.

Corrutina Reiniciar_Posicion_Jugador:

Esta rutina se utiliza para reiniciar la posición del jugador después de un período de tiempo después de la muerte. También se restauran las animaciones y el estado de patrulla del enemigo.

Aparte del código del enemigo también tenemos otro codigo para la deteccion del player.

Trigger Enemigo

Variable estática DentroCampoVision:

public static bool DentroCampoVision: Esta es una variable booleana estática que se utiliza para rastrear si el jugador está dentro del campo de visión del enemigo. Al ser estática, esta variable es compartida entre todas las instancias de la clase TriggerEnemigo.

Método Start:

En este método, se inicializa la variable DentroCampoVision estableciéndola en false, lo que significa que inicialmente se considera que el jugador no está dentro del campo de visión del enemigo.

Métodos OnTriggerEnter y OnTriggerExit:

Estos métodos se utilizan para detectar colisiones entre el enemigo y otros objetos con colisionadores que tengan la etiqueta "Player".

private void OnTriggerEnter(Collider col): Se verifica si el objeto que entró en colisión tiene la etiqueta "Player" (col.tag == "Player"). 

private void OnTriggerExit(Collider col): Se verifica si el objeto que salió de la colisión tiene la etiqueta "Player". Si es así, significa que el jugador ha salido del campo de visión del enemigo, por lo que se establece DentroCampoVision en false.

En resumen, este script se utiliza para rastrear si el jugador está dentro o fuera del campo de visión de un enemigo.

Candado

Y por ultimo tenemos el codigo que sirve para abrir el maletero con la llave.

Candado

Método Start:

Se inicializan las variables rotar y llaveGirada en false. Esto significa que inicialmente el candado no puede rotar y la llave no se ha girado.

Método Update:

Si rotar es true y llaveGirada es false, y la rotación actual del candado (transform.eulerAngles.y) es menor que 90 grados, el candado rota para que su rotación sea igual a la de la llave (Llave.transform.eulerAngles).

Cuando la rotación del candado supera los 90 grados y rotar es true, significa que la llave se ha girado con éxito en el candado. En este punto, llaveGirada se establece en true, rotar se establece en false, la rotación del candado se ajusta a (0, 90, 0) para asegurarse de que esté completamente girada, se reproduce un sonido de apertura del maletero (Abrir_Maletero.Play()), se habilita la animación del maletero (Maletero.GetComponent<Animator>().enabled = true), y se llama al método completarMision() de un componente llamado Objeto.

Método OnTriggerEnter:

Este método se llama cuando un objeto con colisionador entra en el área de colisión del objeto que contiene este script. En este caso, se verifica si el objeto que entró en colisión tiene la etiqueta "Llave" (col.tag == "Llave").

My Website

Y por ultimo, os dejo un enlace a mi pagina web:

WIx jdfnadj


Comments (0)

This project doesn't have any comments yet.