Duvida sobre GetKeyDown !!!!
3 participantes
Página 1 de 1
Duvida sobre GetKeyDown !!!!
Eu fiz este codigo para meu personagem 2D deitar para direita e não poder andar:
Quando eu apertar a tecla F,o meu Personagem 2D deita e não pode andar para nenhum lado
e se eu apertar novamente o F,o Personagem vai para a animação de parado para direita e volta a poder andar para qualquer lado....mas,Não esta acontecendo o que deve!!isso so acontece se eu aperte e SEGURAR a tecla F e não so apertar e depois apertar novamente,entende?
Como posso corrigir isso?Achava que o Getkeydown fosse isso,apertar para deitar,depois apertar dinovo para levantar.
- Código:
if (Input.GetKeyDown (KeyCode.F) && direcao == ("Direita")) {
ControlAgachar.SetInteger ("Condição", 17);
Velocidade = 0;
}
if (Input.GetKeyUp (KeyCode.F) && direcao == ("Direita")) {
ControlAgachar.SetInteger ("Condição", 2);
Velocidade = 8;
}
Quando eu apertar a tecla F,o meu Personagem 2D deita e não pode andar para nenhum lado
e se eu apertar novamente o F,o Personagem vai para a animação de parado para direita e volta a poder andar para qualquer lado....mas,Não esta acontecendo o que deve!!isso so acontece se eu aperte e SEGURAR a tecla F e não so apertar e depois apertar novamente,entende?
Como posso corrigir isso?Achava que o Getkeydown fosse isso,apertar para deitar,depois apertar dinovo para levantar.
Re: Duvida sobre GetKeyDown !!!!
Pronto. Movi pra você, amigo.
JohnRambo- Moderador
- PONTOS : 5172
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Re: Duvida sobre GetKeyDown !!!!
Quanto a sua duvida, poste o script completo. Mas olha:
GetKey = é chamado a cada frame enquanto você segura a tecla
GetKeyDown = é chamado em um único frame em apenas uma vez em que você aperta a tecla
GetKeyUp = é chamado em um único frame quando você solta a tecla que foi pressionada.
Caso não saiba...
GetKey = é chamado a cada frame enquanto você segura a tecla
GetKeyDown = é chamado em um único frame em apenas uma vez em que você aperta a tecla
GetKeyUp = é chamado em um único frame quando você solta a tecla que foi pressionada.
Caso não saiba...
JohnRambo- Moderador
- PONTOS : 5172
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Re: Duvida sobre GetKeyDown !!!!
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Playercontroler : MonoBehaviour {
private Animator ControlAgachar;
public string direcao = ("Direita");
public float Velocidade = 8.0f;
void Start () {
ControlAgachar = GetComponent<Animator> ();
}
void FixedUpdate () {
// Controles normais W A S D e suas animaçoes
if (Input.GetKey (KeyCode.D)) {
transform.Translate (Velocidade * Time.deltaTime, 0.0f, 0.0f);
ControlAgachar.SetInteger ("Condição", 1);
direcao = ("Direita");
}
if (Input.GetKeyUp (KeyCode.D)) {
ControlAgachar.SetInteger ("Condição", 2);
direcao = ("Direita");
}
if (Input.GetKey (KeyCode.A)) {
transform.Translate (-Velocidade * Time.deltaTime, 0.0f, 0.0f);
ControlAgachar.SetInteger ("Condição", 3);
direcao = ("Esquerda");
}
if (Input.GetKeyUp (KeyCode.A)) {
ControlAgachar.SetInteger ("Condição", 4);
direcao = ("Esquerda");
}
if (Input.GetKey (KeyCode.S)) {
transform.Translate (0.0f, 0.0f, -Velocidade * Time.deltaTime);
ControlAgachar.SetInteger ("Condição", 7);
direcao = ("Baixo");
}
if (Input.GetKeyUp (KeyCode.S)) {
ControlAgachar.SetInteger ("Condição", 8);
direcao = ("Baixo");
}
if (Input.GetKey (KeyCode.W)) {
transform.Translate (0.0f, 0.0f, Velocidade * Time.deltaTime);
ControlAgachar.SetInteger ("Condição", 5);
direcao = ("Cima");
}
if (Input.GetKeyUp (KeyCode.W)) {
ControlAgachar.SetInteger ("Condição", 6);
direcao = ("Cima");
}
//Agachar e suas animaçoes
if (Input.GetKeyDown (KeyCode.LeftControl) && direcao == ("Direita")){
ControlAgachar.SetInteger ("Condição", 9);
}
if (Input.GetKeyUp (KeyCode.LeftControl) && direcao == ("Direita")) {
ControlAgachar.SetInteger ("Condição", 2);
}
if (Input.GetKeyDown (KeyCode.LeftControl) && direcao == ("Esquerda")) {
ControlAgachar.SetInteger ("Condição", 10);
}
if (Input.GetKeyUp (KeyCode.LeftControl) && direcao == ("Esquerda")) {
ControlAgachar.SetInteger ("Condição", 4);
}
if (Input.GetKeyDown (KeyCode.LeftControl) && direcao == ("Cima")) {
ControlAgachar.SetInteger ("Condição", 11);
}
if (Input.GetKeyUp (KeyCode.LeftControl) && direcao == ("Cima")) {
ControlAgachar.SetInteger ("Condição", 6);
}
if (Input.GetKeyDown (KeyCode.LeftControl) && direcao == ("Baixo")) {
ControlAgachar.SetInteger ("Condição", 12);
}
if (Input.GetKeyUp (KeyCode.LeftControl) && direcao == ("Baixo")) {
ControlAgachar.SetInteger ("Condição", 8);
}
//Andar agachado e suas animaçoes
if (Input.GetKey (KeyCode.LeftControl) && Input.GetKeyDown ("d")) {
ControlAgachar.SetInteger ("Condição", 13);
Velocidade = 3.5f;
}
if (Input.GetKey (KeyCode.LeftControl) && Input.GetKeyUp ("d")) {
ControlAgachar.SetInteger ("Condição", 9);
Velocidade = 8;
}
if (Input.GetKeyUp (KeyCode.LeftControl) && Input.GetKeyUp ("d")) {
ControlAgachar.SetInteger ("Condição", 2);
Velocidade = 8;
}
if (Input.GetKey (KeyCode.LeftControl) && Input.GetKeyDown ("a")) {
ControlAgachar.SetInteger ("Condição", 14);
Velocidade = 3.5f;
}
if (Input.GetKey (KeyCode.LeftControl) && Input.GetKeyUp ("a")) {
ControlAgachar.SetInteger ("Condição", 10);
Velocidade = 8;
}
if (Input.GetKeyUp (KeyCode.LeftControl) && Input.GetKeyUp ("a")) {
ControlAgachar.SetInteger ("Condição", 4);
Velocidade = 8;
}
if (Input.GetKey (KeyCode.LeftControl) && Input.GetKeyDown ("w")) {
ControlAgachar.SetInteger ("Condição", 15);
Velocidade = 3.5f;
}
if (Input.GetKey (KeyCode.LeftControl) && Input.GetKeyUp ("w")) {
ControlAgachar.SetInteger ("Condição", 11);
Velocidade = 8;
}
if (Input.GetKeyUp (KeyCode.LeftControl) && Input.GetKeyUp ("w")) {
ControlAgachar.SetInteger ("Condição", 6);
Velocidade = 8;
}
if (Input.GetKey (KeyCode.LeftControl) && Input.GetKeyDown ("s")) {
ControlAgachar.SetInteger ("Condição", 16);
Velocidade = 3.5f;
}
if (Input.GetKey (KeyCode.LeftControl) && Input.GetKeyUp ("s")) {
ControlAgachar.SetInteger ("Condição", 12);
Velocidade = 8;
}
if (Input.GetKeyUp (KeyCode.LeftControl) && Input.GetKeyUp ("s")) {
ControlAgachar.SetInteger ("Condição", 8);
Velocidade = 8;
}
//Deitar e suas animaçoes
if (Input.GetKeyDown (KeyCode.F) && direcao == ("Direita")) {
ControlAgachar.SetInteger ("Condição", 17);
Velocidade = 0;
}
if (Input.GetKeyUp (KeyCode.F) && direcao == ("Direita")) {
ControlAgachar.SetInteger ("Condição", 2);
Velocidade = 8;
}
if (Input.GetKeyDown (KeyCode.F) && direcao == ("Esquerda")) {
ControlAgachar.SetInteger ("Condição", 18);
Velocidade = 0;
}
if (Input.GetKeyUp (KeyCode.F) && direcao == ("Esquerda")) {
ControlAgachar.SetInteger ("Condição", 4);
Velocidade = 8;
}
if (Input.GetKeyDown (KeyCode.F) && direcao == ("Cima")) {
ControlAgachar.SetInteger ("Condição", 19);
Velocidade = 0;
}
if (Input.GetKeyUp (KeyCode.F) && direcao == ("Cima")) {
ControlAgachar.SetInteger ("Condição", 6);
Velocidade = 8;
}
if (Input.GetKeyDown (KeyCode.F) && direcao == ("Baixo")) {
ControlAgachar.SetInteger ("Condição", 20);
Velocidade = 0;
}
if (Input.GetKeyUp (KeyCode.F) && direcao == ("Baixo")) {
ControlAgachar.SetInteger ("Condição", 8);
Velocidade = 8;
}
}
}
Eu ainda tenho que fazer algumas coisas,como faze-lo pular e correr....
mas neste parte de agachar,eu quero que quando aperte F o personagem deita e ele não vai se movimentar para nenhum lado,e quando aperte novamente ele levanta...so estou com problema nesta parte de apertar e depois apertar novamente,não sei oque colocar
Re: Duvida sobre GetKeyDown !!!!
Use isso aqui Amigo.Eu fis isso pra Ligar meu Veiculo e Funcionou
- Código:
if (Input.GetKeyDown (Parar)) {
if (Andando == true) {
Andando = false;
} else if (Input.GetKeyDown (Parar)) {
Andando = true;
AudioSource.PlayClipAtPoint(Som, transform.position);
Debug.Log ("Engine ON");
}
}
LucasGamerFx- MembroAvançado
- PONTOS : 2758
REPUTAÇÃO : 3
Idade : 28
Áreas de atuação : Programador
Respeito as regras :
Re: Duvida sobre GetKeyDown !!!!
LucasGamerFx escreveu:Use isso aqui Amigo.Eu fis isso pra Ligar meu Veiculo e Funcionou
- Código:
if (Input.GetKeyDown (Ligar)) {
if (Ligado == true) {
Ligado = false;
} else if (Input.GetKeyDown (Ligar)) {
Ligado = true;
AudioSource.PlayClipAtPoint(Som, transform.position);
Debug.Log ("Engine ON");
}
}
LucasGamerFx- MembroAvançado
- PONTOS : 2758
REPUTAÇÃO : 3
Idade : 28
Áreas de atuação : Programador
Respeito as regras :
Re: Duvida sobre GetKeyDown !!!!
Aew Amigo
o parar é um botão e o andando é uma bool
o parar é um botão e o andando é uma bool
LucasGamerFx- MembroAvançado
- PONTOS : 2758
REPUTAÇÃO : 3
Idade : 28
Áreas de atuação : Programador
Respeito as regras :
Tópicos semelhantes
» [DÚVIDA] Dúvida sobre script e rigidbody
» Preciso de ajuda com o GetKeyDown
» Problema ao dar um valor fixo pra uma variável numérica com GetKeyDown ou ButtonDown
» Script não detecta certos comandos como "Input" e "GetKeyDown"
» [Duvida] Duvida Com script de mover em direção ao mouse.
» Preciso de ajuda com o GetKeyDown
» Problema ao dar um valor fixo pra uma variável numérica com GetKeyDown ou ButtonDown
» Script não detecta certos comandos como "Input" e "GetKeyDown"
» [Duvida] Duvida Com script de mover em direção ao mouse.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos