/******************************************************************************************************************Funcion "OnCollisionEnter"******************************************************************************************************************/ /// <summary> /// Se verifica cuando el héroe colisiona contra un ciudadano para mostrar /// en la UI un mensaje que depende de una variable aleatoria. /// </summary> /// <param name="collision"></param> void OnCollisionEnter(Collision collision) { if (collision.gameObject.GetComponent <Citizen>()) { citizenText = true; citizenStruct_H = collision.gameObject.GetComponent <Citizen>().CitizenMessage(); npcStruct_H = collision.gameObject.GetComponent <Npc>().NpcMessage(); StopCoroutine("RemoveDialogue"); heroStruct_H.dialogue.enabled = true; randomDialogue = Random.Range(0, 3); if (randomDialogue == 0) { heroStruct_H.dialogue.text = "CITIZEN: Hello, i am " + citizenStruct_H.names + " and i am " + npcStruct_H.age + " years old"; StartCoroutine("RemoveDialogue"); } else if (randomDialogue == 1) { heroStruct_H.dialogue.text = "You can find ammunition around the map"; StartCoroutine("RemoveDialogue"); } else if (randomDialogue == 2) { heroStruct_H.dialogue.text = "You can heal yourself with a green capsule, look for it!"; StartCoroutine("RemoveDialogue"); } } }
/******************************************************************************************************************Funcion "OnCollisionEnter"******************************************************************************************************************/ void OnCollisionEnter(Collision collision) //Utilizo la función "OnCollisionEnter" para detectar cuando hay una colisión. { if (collision.gameObject.GetComponent <Citizen>()) //Verifico con el condicional si el objeto que tiene este script esta chocando con algún otro que tenga el componente de "Citizen". { citizenText = true; citizenStruct_H = collision.gameObject.GetComponent <Citizen>().CitizenMessage(); //En resumen, "citizenStruct_H" es igual a la función "CitizenMessage()" ubicada en la clase "Citizen" y, esta función retorna la estructura local de dicha clase, por lo tanto, "CitizenStruct_H" será igual a "CitizenStruct_C". npcStruct_H = collision.gameObject.GetComponent <Npc>().NpcMessage(); StopCoroutine("RemoveDialogue"); //Detengo la corrutina, esto es para que siempre que colisione se asegure de, en caso de que este activada, la detenga para que no se acumule. heroStruct_H.dialogue.enabled = true; //Activo el texto para que se pueda hacer la siguiente línea. heroStruct_H.dialogue.text = "CITIZEN: Hello, i am " + citizenStruct_H.names + " and i am " + npcStruct_H.age + " years old"; //Ahora el texto de la variable "dialogue" de la estructura cambiará a lo que aparece entre comillas más "CitizenStruct_H.bodyPart", es decir, "CitizenStruct_H" se acabó de sobrescribir por "CitizenStruct_Z" y luego accedimos a la variable "randomName" de la estructura, y lo mismo con "citizenStruct.age" StartCoroutine("RemoveDialogue"); //Llamo la corrutina que desactivará el texto. } }
CitizenStruct citizenStruct_H; //Creo una variable de tipo "CitizenStruct" que es la estructura del ciudadano. /******************************************************************************************************************Funcion "OnCollisionEnter"******************************************************************************************************************/ void OnCollisionEnter(Collision collision) //Utilizo la función "OnCollisionEnter" para detectar cuando hay una colisión. { if (collision.gameObject.GetComponent <Zombie>()) //Verifico con el condicional si el objeto que tiene este script esta chocando con algún otro que tenga el componente de "Zombie". { zombieStruct_H = collision.gameObject.GetComponent <Zombie>().ZombieMessage(); //En resumen, "ZombieStruct_H" es igual a la función "ZombieMessage()" ubicada en la clase "Zombie" y, esta función retorna la estructura local de dicha clase, por lo tanto, "ZombieStruct_H" será igual a "ZombieStruct_Z". print("Waaaarrrr i want to eat " + zombieStruct_H.bodyPart); //Ahora imprimo lo que aparece entre comillas más "zombieStruct_H.bodyPart", es decir, "zombieStruct_H" se acabó de sobrescribir por "zombieStruct_Z" y luego accedimos a la variable "bodyPart" de la estructura. } if (collision.gameObject.GetComponent <Citizen>()) //Verifico con el condicional si el objeto que tiene este script esta chocando con algún otro que tenga el componente de "Citizen". { citizenStruct_H = collision.gameObject.GetComponent <Citizen>().CitizenMessage(); //En resumen, "citizenStruct_H" es igual a la función "CitizenMessage()" ubicada en la clase "Citizen" y, esta función retorna la estructura local de dicha clase, por lo tanto, "CitizenStruct_H" será igual a "CitizenStruct_C". print("Hello, i am " + citizenStruct_H.names + " and i am " + citizenStruct_H.age + " years old"); //Ahora imprimo lo que aparece entre comillas más "CitizenStruct_H.bodyPart", es decir, "CitizenStruct_H" se acabó de sobrescribir por "CitizenStruct_Z" y luego accedimos a la variable "randomName" de la estructura, y lo mismo con "citizenStruct.age" } }