[RESOLVIDO] Mensagem UI
3 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Mensagem UI
Bom eu uso este script do Marcos sobre MensagemUI, só que no caso eu gostaria que quando eu chegasse perto do Objeto, o nome dele se destacasse e logo após eu coletar este objeto, a mensagem(nome) também some.. Quando eu tento fazer isso, ela permanece na tela..
Script:
Script:
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Mensagem : MonoBehaviour {
public Text texto;
private GameObject Jogador;
[Range(0.1f,10.0f)]public float distancia = 3;
void Start () {
texto.enabled = false;
Jogador = GameObject.FindWithTag ("Player");
}
// Update is called once per frame
void Update () {
if (Vector3.Distance (transform.position, Jogador.transform.position) < distancia) {
texto.enabled = true;
}else{
texto.enabled = false;
}
}
}
Re: [RESOLVIDO] Mensagem UI
Qual o script você usa para coletar o objeto? Ele pode ser útil para poder "destruir" o UI :v
NKKF- ProgramadorMaster
- PONTOS : 4818
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Re: [RESOLVIDO] Mensagem UI
Bom no caso eu utilizo o mesmo sistema de Portas e Chaves do Unity 5 para poder coletar os objetos que são necessários para abrir determinada coisa.. Eu já pensei em fazer isso só que não sei nem por onde começar pois o script é bem grande.NKKF escreveu:Qual o script você usa para coletar o objeto? Ele pode ser útil para poder "destruir" o UI :v
Este Script é apenas da Chave:
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(AudioSource))]
public class ItemChave : MonoBehaviour {
public int IDDestaChave = 0;
[Range(0.1f,10.0f)] public float distanciaDaChave = 3;
public KeyCode TeclaPegar = KeyCode.E;
public AudioClip somPegarChave;
AudioSource emissorDeSom;
GameObject Jogador;
Chaves _listaDeChaves;
bool jaPegou;
void Start(){
jaPegou = false;
Jogador = GameObject.FindWithTag ("Player");
if (Jogador != null) {
_listaDeChaves = Jogador.GetComponent<Chaves> ();
}
emissorDeSom = GetComponent<AudioSource> ();
emissorDeSom.playOnAwake = false;
emissorDeSom.loop = false;
}
void Update(){
if (Jogador != null && _listaDeChaves != null) {
if (jaPegou == false) {
float distancia = Vector3.Distance (Jogador.transform.position, transform.position);
if (distancia < distanciaDaChave) {
if (Input.GetKeyDown (TeclaPegar)) {
_listaDeChaves.ChavesDoJogador.Add (IDDestaChave);
jaPegou = true;
StartCoroutine ("DestruirObjeto");
}
}
}
}
}
IEnumerator DestruirObjeto(){
MeshRenderer renderer = GetComponentInChildren <MeshRenderer> ();
if (renderer != null) {
renderer.enabled = false;
}
if (somPegarChave != null) {
emissorDeSom.clip = somPegarChave;
emissorDeSom.PlayOneShot (emissorDeSom.clip);
}
yield return new WaitForSeconds (3);
Destroy (gameObject);
}
}
Re: [RESOLVIDO] Mensagem UI
Voce pode usar assim
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Mensagem : MonoBehaviour {
public Text texto;
private GameObject Jogador;
public string nome;
public static Mensagem instance;
[Range(0.1f,10.0f)]public float distancia = 3;
void Start () {
instance = this;
texto.enabled = false;
Jogador = GameObject.FindWithTag ("Player");
}
// Update is called once per frame
void Update () {
if (Vector3.Distance (transform.position, Jogador.transform.position) < distancia) {
texto.enabled = true;
texto.text = nome;
}else{
texto.enabled = false;
}
}
public void SetName(string nome)
{
nome = nome
}
public void AtiveText(bool ative)
{
texto.enabled = ative;
}
}
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(AudioSource))]
public class ItemChave : MonoBehaviour {
public int IDDestaChave = 0;
[Range(0.1f,10.0f)] public float distanciaDaChave = 3;
public KeyCode TeclaPegar = KeyCode.E;
public AudioClip somPegarChave;
AudioSource emissorDeSom;
GameObject Jogador;
Chaves _listaDeChaves;
bool jaPegou;
public string nome;
void Start(){
jaPegou = false;
Jogador = GameObject.FindWithTag ("Player");
if (Jogador != null) {
_listaDeChaves = Jogador.GetComponent<Chaves> ();
}
emissorDeSom = GetComponent<AudioSource> ();
emissorDeSom.playOnAwake = false;
emissorDeSom.loop = false;
}
void Update(){
if (Jogador != null && _listaDeChaves != null) {
if (jaPegou == false) {
float distancia = Vector3.Distance (Jogador.transform.position, transform.position);
if (distancia < distanciaDaChave) {
if (Input.GetKeyDown (TeclaPegar)) {
Mensagem.instance.SetName(nome);
Mensagem.instance.AtiveText(true);
_listaDeChaves.ChavesDoJogador.Add (IDDestaChave);
jaPegou = true;
StartCoroutine ("DestruirObjeto");
}
}
}
}
}
IEnumerator DestruirObjeto(){
MeshRenderer renderer = GetComponentInChildren <MeshRenderer> ();
if (renderer != null) {
renderer.enabled = false;
Mensagem.instance.AtiveText(true);
}
if (somPegarChave != null) {
emissorDeSom.clip = somPegarChave;
emissorDeSom.PlayOneShot (emissorDeSom.clip);
}
yield return new WaitForSeconds (3);
Destroy (gameObject);
}
}
Re: [RESOLVIDO] Mensagem UI
Opa mano !! Funcionou perfeitamente.. Muito Obrigado Pela Ajuda :DCallyde Jr escreveu:Voce pode usar assim
- Código:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Mensagem : MonoBehaviour {
public Text texto;
private GameObject Jogador;
public string nome;
public static Mensagem instance;
[Range(0.1f,10.0f)]public float distancia = 3;
void Start () {
instance = this;
texto.enabled = false;
Jogador = GameObject.FindWithTag ("Player");
}
// Update is called once per frame
void Update () {
if (Vector3.Distance (transform.position, Jogador.transform.position) < distancia) {
texto.enabled = true;
texto.text = nome;
}else{
texto.enabled = false;
}
}
public void SetName(string nome)
{
nome = nome
}
public void AtiveText(bool ative)
{
texto.enabled = ative;
}
}
- Código:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(AudioSource))]
public class ItemChave : MonoBehaviour {
public int IDDestaChave = 0;
[Range(0.1f,10.0f)] public float distanciaDaChave = 3;
public KeyCode TeclaPegar = KeyCode.E;
public AudioClip somPegarChave;
AudioSource emissorDeSom;
GameObject Jogador;
Chaves _listaDeChaves;
bool jaPegou;
public string nome;
void Start(){
jaPegou = false;
Jogador = GameObject.FindWithTag ("Player");
if (Jogador != null) {
_listaDeChaves = Jogador.GetComponent<Chaves> ();
}
emissorDeSom = GetComponent<AudioSource> ();
emissorDeSom.playOnAwake = false;
emissorDeSom.loop = false;
}
void Update(){
if (Jogador != null && _listaDeChaves != null) {
if (jaPegou == false) {
float distancia = Vector3.Distance (Jogador.transform.position, transform.position);
if (distancia < distanciaDaChave) {
if (Input.GetKeyDown (TeclaPegar)) {
Mensagem.instance.SetName(nome);
Mensagem.instance.AtiveText(true);
_listaDeChaves.ChavesDoJogador.Add (IDDestaChave);
jaPegou = true;
StartCoroutine ("DestruirObjeto");
}
}
}
}
}
IEnumerator DestruirObjeto(){
MeshRenderer renderer = GetComponentInChildren <MeshRenderer> ();
if (renderer != null) {
renderer.enabled = false;
Mensagem.instance.AtiveText(true);
}
if (somPegarChave != null) {
emissorDeSom.clip = somPegarChave;
emissorDeSom.PlayOneShot (emissorDeSom.clip);
}
yield return new WaitForSeconds (3);
Destroy (gameObject);
}
}
Tópicos semelhantes
» [RESOLVIDO] mensagem na tela
» [RESOLVIDO] Ajuda com Script de Mensagem
» [RESOLVIDO] Tocar som em script que exibe uma mensagem
» Mensagem OnTriggerEnter2D
» DUVIDA MENSAGEM APARECER NA TELA
» [RESOLVIDO] Ajuda com Script de Mensagem
» [RESOLVIDO] Tocar som em script que exibe uma mensagem
» Mensagem OnTriggerEnter2D
» DUVIDA MENSAGEM APARECER NA TELA
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos