[RESOLVIDO] O mesmo botão para duas ações
3 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] O mesmo botão para duas ações
Boa tarde, estou tendo problemas com interação com Inputs, por exemplo, estou tentando fazer meu jogador interagir com uma nota, ao pressionar 'E' ele abre a nota, e quero que, ao pressionar de novo o 'E' ele feche a nota, mas eu já tentei de todas as formas que conheço e nenhuma funcionou, se alguém estiver disposto a ajudar, ai está o código:
Interaction do Jogador:
Codigo da nota:
Obrigado <3
Interaction do Jogador:
- Código:
if (hit.collider.CompareTag ("Note")) {
Debug.Log ("Coletou a nota");
Notes note = hit.collider.GetComponent<Notes> ();
note.noteReading = true;
}
Codigo da nota:
- Código:
public string noteName;
public bool noteReading = false;
GameObject note;
Controller pl;
void Start () {
pl = GameObject.FindGameObjectWithTag ("Player").GetComponent<Controller> ();
note = GameObject.Find (noteName);
note.SetActive (false);
}
void Update() {
if (noteReading) {
Debug.Log ("Abriu a nota");
note.SetActive (true);
Time.timeScale = 0f;
pl.enabled = false;
if (Input.GetKeyDown (KeyCode.C))
noteReading = false;
} else {
Debug.Log ("Fechou a nota");
note.SetActive (false);
Time.timeScale = 1f;
pl.enabled = true;
}
}
Obrigado <3
Gwiisk- Membro
- PONTOS : 3263
REPUTAÇÃO : 0
Respeito as regras :
Re: [RESOLVIDO] O mesmo botão para duas ações
E só para avisar, eu sei que o KeyCode está C, qualquer outro botão sem ser o 'E' funciona normalmente.Gwiisk escreveu:Boa tarde, estou tendo problemas com interação com Inputs, por exemplo, estou tentando fazer meu jogador interagir com uma nota, ao pressionar 'E' ele abre a nota, e quero que, ao pressionar de novo o 'E' ele feche a nota, mas eu já tentei de todas as formas que conheço e nenhuma funcionou, se alguém estiver disposto a ajudar, ai está o código:
Interaction do Jogador:
- Código:
if (hit.collider.CompareTag ("Note")) {
Debug.Log ("Coletou a nota");
Notes note = hit.collider.GetComponent<Notes> ();
note.noteReading = true;
}
Codigo da nota:
- Código:
public string noteName;
public bool noteReading = false;
GameObject note;
Controller pl;
void Start () {
pl = GameObject.FindGameObjectWithTag ("Player").GetComponent<Controller> ();
note = GameObject.Find (noteName);
note.SetActive (false);
}
void Update() {
if (noteReading) {
Debug.Log ("Abriu a nota");
note.SetActive (true);
Time.timeScale = 0f;
pl.enabled = false;
if (Input.GetKeyDown (KeyCode.C))
noteReading = false;
} else {
Debug.Log ("Fechou a nota");
note.SetActive (false);
Time.timeScale = 1f;
pl.enabled = true;
}
}
Obrigado <3
Gwiisk- Membro
- PONTOS : 3263
REPUTAÇÃO : 0
Respeito as regras :
Re: [RESOLVIDO] O mesmo botão para duas ações
Muito simples, coloque isto.Gwiisk escreveu:Boa tarde, estou tendo problemas com interação com Inputs, por exemplo, estou tentando fazer meu jogador interagir com uma nota, ao pressionar 'E' ele abre a nota, e quero que, ao pressionar de novo o 'E' ele feche a nota, mas eu já tentei de todas as formas que conheço e nenhuma funcionou, se alguém estiver disposto a ajudar, ai está o código:
Interaction do Jogador:
- Código:
if (hit.collider.CompareTag ("Note")) {
Debug.Log ("Coletou a nota");
Notes note = hit.collider.GetComponent<Notes> ();
note.noteReading = true;
}
Codigo da nota:
- Código:
public string noteName;
public bool noteReading = false;
GameObject note;
Controller pl;
void Start () {
pl = GameObject.FindGameObjectWithTag ("Player").GetComponent<Controller> ();
note = GameObject.Find (noteName);
note.SetActive (false);
}
void Update() {
if (noteReading) {
Debug.Log ("Abriu a nota");
note.SetActive (true);
Time.timeScale = 0f;
pl.enabled = false;
if (Input.GetKeyDown (KeyCode.C))
noteReading = false;
} else {
Debug.Log ("Fechou a nota");
note.SetActive (false);
Time.timeScale = 1f;
pl.enabled = true;
}
}
Obrigado <3
note.SetActive (!note.active);
Água Sem Hidrogênio- Avançado
- PONTOS : 2750
REPUTAÇÃO : 25
Respeito as regras :
Re: [RESOLVIDO] O mesmo botão para duas ações
Cara, eu tentei aqui e deu um Bug bem sinistro kkÁgua Sem Hidrogênio escreveu:Muito simples, coloque isto.Gwiisk escreveu:Boa tarde, estou tendo problemas com interação com Inputs, por exemplo, estou tentando fazer meu jogador interagir com uma nota, ao pressionar 'E' ele abre a nota, e quero que, ao pressionar de novo o 'E' ele feche a nota, mas eu já tentei de todas as formas que conheço e nenhuma funcionou, se alguém estiver disposto a ajudar, ai está o código:
Interaction do Jogador:
- Código:
if (hit.collider.CompareTag ("Note")) {
Debug.Log ("Coletou a nota");
Notes note = hit.collider.GetComponent<Notes> ();
note.noteReading = true;
}
Codigo da nota:
- Código:
public string noteName;
public bool noteReading = false;
GameObject note;
Controller pl;
void Start () {
pl = GameObject.FindGameObjectWithTag ("Player").GetComponent<Controller> ();
note = GameObject.Find (noteName);
note.SetActive (false);
}
void Update() {
if (noteReading) {
Debug.Log ("Abriu a nota");
note.SetActive (true);
Time.timeScale = 0f;
pl.enabled = false;
if (Input.GetKeyDown (KeyCode.C))
noteReading = false;
} else {
Debug.Log ("Fechou a nota");
note.SetActive (false);
Time.timeScale = 1f;
pl.enabled = true;
}
}
Obrigado <3
note.SetActive (!note.active);
Gwiisk- Membro
- PONTOS : 3263
REPUTAÇÃO : 0
Respeito as regras :
Re: [RESOLVIDO] O mesmo botão para duas ações
Qual foi o erro?Gwiisk escreveu:Cara, eu tentei aqui e deu um Bug bem sinistro kkÁgua Sem Hidrogênio escreveu:Muito simples, coloque isto.Gwiisk escreveu:Boa tarde, estou tendo problemas com interação com Inputs, por exemplo, estou tentando fazer meu jogador interagir com uma nota, ao pressionar 'E' ele abre a nota, e quero que, ao pressionar de novo o 'E' ele feche a nota, mas eu já tentei de todas as formas que conheço e nenhuma funcionou, se alguém estiver disposto a ajudar, ai está o código:
Interaction do Jogador:
- Código:
if (hit.collider.CompareTag ("Note")) {
Debug.Log ("Coletou a nota");
Notes note = hit.collider.GetComponent<Notes> ();
note.noteReading = true;
}
Codigo da nota:
- Código:
public string noteName;
public bool noteReading = false;
GameObject note;
Controller pl;
void Start () {
pl = GameObject.FindGameObjectWithTag ("Player").GetComponent<Controller> ();
note = GameObject.Find (noteName);
note.SetActive (false);
}
void Update() {
if (noteReading) {
Debug.Log ("Abriu a nota");
note.SetActive (true);
Time.timeScale = 0f;
pl.enabled = false;
if (Input.GetKeyDown (KeyCode.C))
noteReading = false;
} else {
Debug.Log ("Fechou a nota");
note.SetActive (false);
Time.timeScale = 1f;
pl.enabled = true;
}
}
Obrigado <3
note.SetActive (!note.active);
- Código:
void Update() {
if (Input.GetKeyDown (KeyCode.C))
note.SetActive (!note.active);
}
Água Sem Hidrogênio- Avançado
- PONTOS : 2750
REPUTAÇÃO : 25
Respeito as regras :
Re: [RESOLVIDO] O mesmo botão para duas ações
tente o:
- Código:
note.transform.gameObject.SetActive(!note.transform.gameObject.activeSelf);
Phph09- Profissional
- PONTOS : 3788
REPUTAÇÃO : 240
Idade : 19
Respeito as regras :
Re: [RESOLVIDO] O mesmo botão para duas ações
Ele desativa e reativa no mesmo segundo, to vendo aq como posso resolverÁgua Sem Hidrogênio escreveu:Qual foi o erro?Gwiisk escreveu:Cara, eu tentei aqui e deu um Bug bem sinistro kkÁgua Sem Hidrogênio escreveu:Muito simples, coloque isto.Gwiisk escreveu:Boa tarde, estou tendo problemas com interação com Inputs, por exemplo, estou tentando fazer meu jogador interagir com uma nota, ao pressionar 'E' ele abre a nota, e quero que, ao pressionar de novo o 'E' ele feche a nota, mas eu já tentei de todas as formas que conheço e nenhuma funcionou, se alguém estiver disposto a ajudar, ai está o código:
Interaction do Jogador:
- Código:
if (hit.collider.CompareTag ("Note")) {
Debug.Log ("Coletou a nota");
Notes note = hit.collider.GetComponent<Notes> ();
note.noteReading = true;
}
Codigo da nota:
- Código:
public string noteName;
public bool noteReading = false;
GameObject note;
Controller pl;
void Start () {
pl = GameObject.FindGameObjectWithTag ("Player").GetComponent<Controller> ();
note = GameObject.Find (noteName);
note.SetActive (false);
}
void Update() {
if (noteReading) {
Debug.Log ("Abriu a nota");
note.SetActive (true);
Time.timeScale = 0f;
pl.enabled = false;
if (Input.GetKeyDown (KeyCode.C))
noteReading = false;
} else {
Debug.Log ("Fechou a nota");
note.SetActive (false);
Time.timeScale = 1f;
pl.enabled = true;
}
}
Obrigado <3
note.SetActive (!note.active);
- Código:
void Update() {
if (Input.GetKeyDown (KeyCode.C))
note.SetActive (!note.active);
}
Gwiisk- Membro
- PONTOS : 3263
REPUTAÇÃO : 0
Respeito as regras :
Re: [RESOLVIDO] O mesmo botão para duas ações
Óh! Desculpe, substitua Input.GetKeyDown por GetKeyUp, realmente, me desculpeGwiisk escreveu:Ele desativa e reativa no mesmo segundo, to vendo aq como posso resolverÁgua Sem Hidrogênio escreveu:Qual foi o erro?Gwiisk escreveu:Cara, eu tentei aqui e deu um Bug bem sinistro kkÁgua Sem Hidrogênio escreveu:Muito simples, coloque isto.Gwiisk escreveu:Boa tarde, estou tendo problemas com interação com Inputs, por exemplo, estou tentando fazer meu jogador interagir com uma nota, ao pressionar 'E' ele abre a nota, e quero que, ao pressionar de novo o 'E' ele feche a nota, mas eu já tentei de todas as formas que conheço e nenhuma funcionou, se alguém estiver disposto a ajudar, ai está o código:
Interaction do Jogador:
- Código:
if (hit.collider.CompareTag ("Note")) {
Debug.Log ("Coletou a nota");
Notes note = hit.collider.GetComponent<Notes> ();
note.noteReading = true;
}
Codigo da nota:
- Código:
public string noteName;
public bool noteReading = false;
GameObject note;
Controller pl;
void Start () {
pl = GameObject.FindGameObjectWithTag ("Player").GetComponent<Controller> ();
note = GameObject.Find (noteName);
note.SetActive (false);
}
void Update() {
if (noteReading) {
Debug.Log ("Abriu a nota");
note.SetActive (true);
Time.timeScale = 0f;
pl.enabled = false;
if (Input.GetKeyDown (KeyCode.C))
noteReading = false;
} else {
Debug.Log ("Fechou a nota");
note.SetActive (false);
Time.timeScale = 1f;
pl.enabled = true;
}
}
Obrigado <3
note.SetActive (!note.active);
- Código:
void Update() {
if (Input.GetKeyDown (KeyCode.C))
note.SetActive (!note.active);
}
Água Sem Hidrogênio- Avançado
- PONTOS : 2750
REPUTAÇÃO : 25
Respeito as regras :
Re: [RESOLVIDO] O mesmo botão para duas ações
Não funcionouPhph09 escreveu:tente o:
- Código:
note.transform.gameObject.SetActive(!note.transform.gameObject.activeSelf);
Gwiisk- Membro
- PONTOS : 3263
REPUTAÇÃO : 0
Respeito as regras :
Re: [RESOLVIDO] O mesmo botão para duas ações
Entao, funcionar funcionou, mas por exemplo, eu quero que enquanto eu estiver com a nota ativada, que o jogo permaneça em estado 'pausado', e quando eu fechar ela o jogo volte ao normal mesmoÁgua Sem Hidrogênio escreveu:Óh! Desculpe, substitua Input.GetKeyDown por GetKeyUp, realmente, me desculpeGwiisk escreveu:Ele desativa e reativa no mesmo segundo, to vendo aq como posso resolverÁgua Sem Hidrogênio escreveu:Qual foi o erro?Gwiisk escreveu:Cara, eu tentei aqui e deu um Bug bem sinistro kkÁgua Sem Hidrogênio escreveu:Muito simples, coloque isto.Gwiisk escreveu:Boa tarde, estou tendo problemas com interação com Inputs, por exemplo, estou tentando fazer meu jogador interagir com uma nota, ao pressionar 'E' ele abre a nota, e quero que, ao pressionar de novo o 'E' ele feche a nota, mas eu já tentei de todas as formas que conheço e nenhuma funcionou, se alguém estiver disposto a ajudar, ai está o código:
Interaction do Jogador:
- Código:
if (hit.collider.CompareTag ("Note")) {
Debug.Log ("Coletou a nota");
Notes note = hit.collider.GetComponent<Notes> ();
note.noteReading = true;
}
Codigo da nota:
- Código:
public string noteName;
public bool noteReading = false;
GameObject note;
Controller pl;
void Start () {
pl = GameObject.FindGameObjectWithTag ("Player").GetComponent<Controller> ();
note = GameObject.Find (noteName);
note.SetActive (false);
}
void Update() {
if (noteReading) {
Debug.Log ("Abriu a nota");
note.SetActive (true);
Time.timeScale = 0f;
pl.enabled = false;
if (Input.GetKeyDown (KeyCode.C))
noteReading = false;
} else {
Debug.Log ("Fechou a nota");
note.SetActive (false);
Time.timeScale = 1f;
pl.enabled = true;
}
}
Obrigado <3
note.SetActive (!note.active);
- Código:
void Update() {
if (Input.GetKeyDown (KeyCode.C))
note.SetActive (!note.active);
}
Gwiisk- Membro
- PONTOS : 3263
REPUTAÇÃO : 0
Respeito as regras :
Re: [RESOLVIDO] O mesmo botão para duas ações
Eu fui mexendo aqui e consegui fazer funcionar usando o que vocês me passaram, obrigado pela ajuda!
- Código:
void Update() {
if (Input.GetKeyUp (KeyCode.E) && noteReading) {
note.SetActive (!note.active);
if (noteReading && note.activeSelf == true) {
Debug.Log ("Abriu a nota");
ShowNote ();
} else {
Debug.Log ("Fechou a nota");
HideNote ();
noteReading = false;
}
}
}
void ShowNote() {
Time.timeScale = 0f;
pl.enabled = false;
}
void HideNote() {
Time.timeScale = 1f;
pl.enabled = true;
}
Gwiisk- Membro
- PONTOS : 3263
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Utilizar o mesmo botão para duas ações. (if e else)
» [RESOLVIDO] Duas ou Varias Lights No Mesmo Lugar
» [RESOLVIDO] alguém sabe como fazer um unico Input fazer duas ações?
» [RESOLVIDO] Botões de Ataque e Pular carrega duas animações ao mesmo tempo
» [RESOLVIDO] Como criar várias ações (funções) em um único botão ???
» [RESOLVIDO] Duas ou Varias Lights No Mesmo Lugar
» [RESOLVIDO] alguém sabe como fazer um unico Input fazer duas ações?
» [RESOLVIDO] Botões de Ataque e Pular carrega duas animações ao mesmo tempo
» [RESOLVIDO] Como criar várias ações (funções) em um único botão ???
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos