SchultzGames
Para tirar dúvidas, crie um tópico especifico na área "Dúvidas em Geral" e aguarde ser respondido. Evite comentar em tópicos não relacionados a sua dúvida :D
TÓPICOS RECENTES:
Tópico:
Postado em:
Postado por:
Meu game para Android " As aventuras de Steff " finalizado, ou quase!
Duvida a respeito da pesquisa do app na google play
Terrain
sistema de perguntas aleatórias de maneira que elas só se repetissem ao se passar todas
Qual versão do JDK, NDK E SDK o Unity Hub recomenda para Unity 2019.2.12f1 (64-bit)?
[DUVIDA]como saber se um jogo esta rodando nativamente 1080p
Diferenca entre bundle google play e split
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
Ajuda com spaw
Projeto de feira
historia para um jogo
Dúvida Realidade aumentada
[Projeto] Omega Racers - Steam Acesso antecipado
Erro build Android
Erro ao dar play Unity
Transparência de objeto através do color.alfa
chamando animaçao depois de um tempo
[DUVIDA] SELECIONAR APP EM SEGUNDO PLANO NO CELULAR
App feito na Unity - Biblia Sagrada
Pode me ajudar com o Simple move
[RESOLVIDO] Erro invisível na aba console (ALGUÉM ME AJUDA?)
DUVIDA IMPORTANTE SOBRE O EXPORT COM A OPCAO SPLIT NA UNITY
[TUTORIAL] Unity 5 - Como criar o próprio FPS Controller
[TUTORIAL] FPS Controller com corpo completo!
[EM DESENVOLVIMENTO] Top Island
(Duvida) Salvando array com playerprefs
PROBLEMA NO BUILD UNITY ANDROID
Estou com problemas com o NavMeshAgent
Diálogos e Linguagens
Saiu o primeiro teaser do meu novo jogo Inferno Verde
suporte para g29
AJUDA COM EXPORTACAO "SPLIT" NA UNITY
Duvida(tamanho de objetos)
Erro no Unity 2019
[RESOLVIDO] Física ser calculada mais rápida
Física do Caminhão e Trailer
[RESOLVIDO] Duvida com FadeIn e FadeOut quando o tempo do jogo acaba
Bug Partículas
Problema com Dano ao Inimigo
Video Player travando no apk do jogo
Uma Ideia Movimento
Como fazer o personagem não conseguir flipar enquanto estou atacando? (Unity 2D)
como resolve esse erro?
[PHOTON] Algumas animações não sincronizam!
SER INSERIDA EM LUGARES RANDÔMICOS!
MACHADO ENCOSTAR NA ÁRVORE
[RESOLVIDO] como respawnar um objeto na minha frente?
Como criar assinatura mensal em jogo na play console
[TUTORIAL] Controle 3ª pessoa com animações mecânicas (root motion)
movendo personagem com rb duvida
Como ignorar um erro? fazer ele parar de aparecer no console?
Simulador de policia [C#] [Jogo em andamento] [Procurando Equipe]
Problema ao iniciar uma array statica
Arquivos com Casa, arvores, Gramas, Objetos3d Etc...
Ajuda com Raycast de hit para um objeto individual citado
ME TIREM UMA DUVIDA DO ADMOB ANTES DE PUBLICAR O GAME
Eu preciso de ajuda para um impulso de pinball
Problemas com movimentação do personagem [AJUDA]
Limite de camera em um jogo metroidvania
AJUDA COM ADMOB
Meu primeiro jogo + Link para download.
duvida player quicando ao descer desnivel
DUVIDA SOBRE - Target Android API
Mudar a Descrição do Elemment Array no Inspector Dinamicamente
[RESOLVIDO] Ajuda com States
Duvida com Script de AI inteligente
UNITY NAO APARECE PROJETOS
Criar Apk Android 64 .aab
Animaçoes
Aplicar física em animação.
Como mudar animação do sprite automaticamente?
PLAYER NAO MOVER ENQUANTO ESTA ABAIXADO
[RESOLVIDO] Detectar quando a animação do animator acaba para dar dano no player
Problema pra compilar jogo para Android 6.0
Unity2D- Fazer 2 inimigos nascerem depois entrar em um collider?
CHUVA AUTOMÁTICA
ME AJUDEM POR FAVORR!!
ATUALIZAR OU NAO O PROJETO?
Como ativar a realidade virtual em tempo de execucao
[TUTORIAL] Unity + PHP + Mysql (com PDO)
Dúvida sobre Realidade Aumentada
Copyright da Assetstore
opnião sobre sistema de carro que é preciso ligar o motor
Imagem cortada na diagonal em apneas dosi aparelhos
Problema com script e physics 2d
erro com ADMOB , AJUDEM POR FAVOR
Problema com o script de menu pause do Marcos
[Dúvida] ScreenShare
Erro na interface da unity para android
[RESOLVIDO] Como fazer uma ação acontecer apenas após a animação terminar?
o sprite editor não quer abrir alguem pode me ajuda com isso?
VERIFICAR SE O USUARIO ESTÁ COM INTERNET
problemas com movimentação de objetos no unity
[TUTORIAL] MENU PRINCIPAL - UNITY 5 (5.3 ou superior) (Com UI)
Preciso de um script para simular a suspeçao a ar
Unity - unidade de medida e escala
[TUTORIAL] Campo de visão dos inimigos (Enemy FOV) com Raycast ou OverlapSphere
Inimigo Em C# Seguir e Atacar o Player !
[RESOLVIDO] Mudar de Camera entre personagens
Hoje à(s) 5:07 am
Hoje à(s) 1:13 am
Ontem à(s) 10:36 pm
Ontem à(s) 5:45 pm
Ontem à(s) 4:37 pm
Ontem à(s) 2:20 pm
Ontem à(s) 11:06 am
Ontem à(s) 5:40 am
Qua Nov 13, 2019 8:26 pm
Qua Nov 13, 2019 4:50 pm
Qua Nov 13, 2019 4:40 pm
Qua Nov 13, 2019 3:30 pm
Qua Nov 13, 2019 1:36 pm
Qua Nov 13, 2019 9:39 am
Qua Nov 13, 2019 2:57 am
Qua Nov 13, 2019 12:48 am
Ter Nov 12, 2019 8:41 pm
Ter Nov 12, 2019 8:35 pm
Ter Nov 12, 2019 6:28 pm
Ter Nov 12, 2019 4:24 pm
Ter Nov 12, 2019 1:52 pm
Ter Nov 12, 2019 11:57 am
Ter Nov 12, 2019 1:15 am
Ter Nov 12, 2019 12:13 am
Seg Nov 11, 2019 11:31 pm
Seg Nov 11, 2019 5:14 pm
Seg Nov 11, 2019 4:37 pm
Seg Nov 11, 2019 3:29 pm
Seg Nov 11, 2019 4:03 am
Dom Nov 10, 2019 10:20 pm
Dom Nov 10, 2019 9:37 pm
Dom Nov 10, 2019 9:30 pm
Dom Nov 10, 2019 8:30 pm
Dom Nov 10, 2019 8:22 pm
Dom Nov 10, 2019 12:04 pm
Dom Nov 10, 2019 11:23 am
Dom Nov 10, 2019 12:18 am
Dom Nov 10, 2019 12:16 am
Dom Nov 10, 2019 12:11 am
Dom Nov 10, 2019 12:02 am
Sab Nov 09, 2019 11:58 pm
Sab Nov 09, 2019 11:56 pm
Sab Nov 09, 2019 11:32 pm
Sab Nov 09, 2019 9:06 pm
Sab Nov 09, 2019 1:29 pm
Sex Nov 08, 2019 8:26 pm
Sex Nov 08, 2019 7:53 pm
Sex Nov 08, 2019 6:09 pm
Sex Nov 08, 2019 1:37 pm
Sex Nov 08, 2019 12:51 pm
Sex Nov 08, 2019 8:17 am
Sex Nov 08, 2019 2:25 am
Sex Nov 08, 2019 1:00 am
Qui Nov 07, 2019 11:29 pm
Qui Nov 07, 2019 8:06 pm
Qui Nov 07, 2019 2:38 pm
Qui Nov 07, 2019 3:53 am
Qui Nov 07, 2019 1:01 am
Qua Nov 06, 2019 9:41 pm
Qua Nov 06, 2019 9:12 pm
Qua Nov 06, 2019 9:01 pm
Qua Nov 06, 2019 3:10 pm
Qua Nov 06, 2019 11:17 am
Qua Nov 06, 2019 4:13 am
Ter Nov 05, 2019 11:23 pm
Ter Nov 05, 2019 10:54 pm
Ter Nov 05, 2019 10:15 pm
Ter Nov 05, 2019 8:48 pm
Ter Nov 05, 2019 8:36 pm
Ter Nov 05, 2019 8:29 pm
Ter Nov 05, 2019 6:35 pm
Ter Nov 05, 2019 3:48 pm
Ter Nov 05, 2019 2:36 pm
Ter Nov 05, 2019 2:16 pm
Ter Nov 05, 2019 3:39 am
Seg Nov 04, 2019 10:14 pm
Seg Nov 04, 2019 9:45 pm
Seg Nov 04, 2019 3:29 pm
Dom Nov 03, 2019 11:09 pm
Dom Nov 03, 2019 4:14 pm
Dom Nov 03, 2019 2:49 pm
Dom Nov 03, 2019 9:42 am
Sab Nov 02, 2019 11:07 pm
Sex Nov 01, 2019 2:13 pm
Sex Nov 01, 2019 12:59 pm
Sex Nov 01, 2019 9:42 am
Sex Nov 01, 2019 8:26 am
Qui Out 31, 2019 12:24 pm
Qui Out 31, 2019 10:38 am
Qua Out 30, 2019 9:12 pm
Ter Out 29, 2019 6:03 pm
Ter Out 29, 2019 12:49 pm
Ter Out 29, 2019 10:18 am
Seg Out 28, 2019 3:03 pm
Seg Out 28, 2019 2:11 pm
Dom Out 27, 2019 12:19 pm
Dom Out 27, 2019 9:25 am
Dom Out 27, 2019 12:45 am
Sab Out 26, 2019 3:31 am
RafaelSquid1
Carbon12 Youth
richerd
eduardonog30
Daniel Dória
guimaraf
gtcmcsgo
MarcosSchultz
RafaelSquid1
porion
RafaelSquid1
numb123
guimaraf
numb123
IOOI
joffersoju
teyroberto1
luizrbizzio
John Wesley
Weslley
verme1311
gtcmcsgo
Blaker
leonardolopes
RafaelSquid1
poyser
luizrbizzio
RafaelSquid1
RafaelSquid1
Patrick
williangamesbr4021
gtcmcsgo
poyser
RafaelSquid1
NKKF
guimaraf
Lester3422
Magnatah
Magnatah
Magnatah
Magnatah
Magnatah
Magnatah
Diguinho
Fagner
leonardolopes
Valakinhas
eduardonog30
dstaroski
Valakinhas
Valakinhas
RafaelSquid1
poyser
RafaelSquid1
Valakinhas
gtcmcsgo
MayLeone
luizrbizzio
Hamassfall
gtcmcsgo
MarceloYBP
Édipo
gtcmcsgo
conceptfac
Hamassfall
MayLeone
Alerson Software
Fagner
Magnatah
Magnatah
MayLeone
pablo77
CyberPh4ntom
eduardonog30
MayLeone
leonardolopes
Fagner
gtcmcsgo
matheusgfgl
Diguinho
Fagner
Tegh
nvndx
eduardonog30
Fagner
gtcmcsgo
Lester3422
ruanzikaad
gtcmcsgo
Hamassfall
Tegh
JohnRambo
Tegh
MarcosSchultz
MayLeone
Emerson Rebouças
lauderson
JohnRambo
lucas998

Histórico de Input

Ir em baixo

DÚVIDA Histórico de Input

Mensagem por NKKF em Sex Mar 29, 2019 6:39 pm

Oi pessoal.

Eu queria fazer com que meu jogador tivesse um "histórico de inputs", porque ele se move à cada 1 clique no WASD e ele faz uma animação que demora uns 0.8 segundos, então se o usuário apertar bem rápido ele esquece alguns movimentos que deveria ter feito (Já que o usuário clicou, por isso o histórico seria necessário).. Alguém tem alguma ideia de como fazer isso?
NKKF
NKKF
ProgramadorMaster

Masculino PONTOS : 2660
REPUTAÇÃO : 482
Idade : 15
Áreas de atuação : Error 404 Not Found.
Respeito as regras : Histórico de Input Aad8pUi

http://www.projetounity.esy.es

Voltar ao Topo Ir em baixo

DÚVIDA Re: Histórico de Input

Mensagem por luiz12345 em Sex Mar 29, 2019 8:08 pm

acho que você poderia utilizar o Debug.Log(); marcar qual botão foi apertado nele e depois coloca uma data em minuto e segundo.
Ficaria algo assim:
Debug.log("Apertou W " + System.DateTime.Now.Minute +  System.DateTime.Now.Second);
Tente ver se eu n errei nada, pode ter alguma letra maiúscula ou minúscula errada ai.

também você poderia resolver esse problema colocando uma float para dar um tempo de espera, ai quando uma animação estiver ocorrendo ele não pode mais se locomover.
ex:
cria 2 float, uma um tempo, outra um tempo máximo.

cria uma void que pede um tempo máximo, e seta a sua variável tempo máximo para ela e deixa a variável do tempo em 0.

chame esta void nos input de deie +/- o tempo que demroa para executar a animação.

ficaria algo assim:

public float Tempo;
public float TempoMaximo;

void update(){

  if(Tempo >= TempoMaximo){

    if(Input.getkeydown(Keycode.W){
     AnimExecution(0.8f);
 }else{
   Tempo += 1 * Time.deltaTime;
   }
 }
 void AnimExecution(float MaxTime){
   TempoMaximo = MaxTime;
   Tempo = 0;
}
(algumas letras maiúsculas e minúsculas devem estar faltando)


só uma ideia de como fazer este sistema de espera, assim basicamente ele não executará uma nova animação se uma já estiver sendo executada, e neste sistema da para colocar animações que possuem o tempo diferentes umas das outras.
luiz12345
luiz12345
MembroAvançado

Masculino PONTOS : 1433
REPUTAÇÃO : 16
Idade : 18
Áreas de atuação : Programação, Modelagem 3D, Criação De Jogos Digitais.
Respeito as regras : Histórico de Input WvDYdlf

https://discord.gg/8b8bGyY

Voltar ao Topo Ir em baixo

DÚVIDA Re: Histórico de Input

Mensagem por luiz12345 em Sex Mar 29, 2019 8:10 pm

public float Tempo;
public float TempoMaximo;

void update(){

  if(Tempo >= TempoMaximo){

    if(Input.getkeydown(Keycode.W){
     AnimExecution(0.8f);
     }
   }else{
   Tempo += 1 * Time.deltaTime;
   }
 }
 void AnimExecution(float MaxTime){
   TempoMaximo = MaxTime;
   Tempo = 0;
}


ops.. esqueci um  " } "  ;-;
luiz12345
luiz12345
MembroAvançado

Masculino PONTOS : 1433
REPUTAÇÃO : 16
Idade : 18
Áreas de atuação : Programação, Modelagem 3D, Criação De Jogos Digitais.
Respeito as regras : Histórico de Input WvDYdlf

https://discord.gg/8b8bGyY

Voltar ao Topo Ir em baixo

DÚVIDA Re: Histórico de Input

Mensagem por NKKF em Sex Mar 29, 2019 11:22 pm

Mas é exatamente o contrário que eu quero fazer: Eu quero que sim, ele siga o que o usuário fez enquanto o "robô" fazia a animação dele.
NKKF
NKKF
ProgramadorMaster

Masculino PONTOS : 2660
REPUTAÇÃO : 482
Idade : 15
Áreas de atuação : Error 404 Not Found.
Respeito as regras : Histórico de Input Aad8pUi

http://www.projetounity.esy.es

Voltar ao Topo Ir em baixo

DÚVIDA Re: Histórico de Input

Mensagem por MarcosSchultz em Sex Mar 29, 2019 11:58 pm

A parte de armazenamento dos dados da pra fazer com list:



Basta adicionar os inputs nas listas toda vez que alguma 'anyKey' for pressionada
MarcosSchultz
MarcosSchultz
Administrador

Masculino PONTOS : 62390
REPUTAÇÃO : 2367
Idade : 23
Áreas de atuação : Administrador do fórum
Respeito as regras : Histórico de Input Aad8pUi

http://www.schultzgames.com

Voltar ao Topo Ir em baixo

DÚVIDA Re: Histórico de Input

Mensagem por NKKF em Sab Mar 30, 2019 12:33 pm

Aproveitando o tópico: como eu faço para que uma tecla se sobreponha à outra? Tipo: eu clico A e B, só que o A eu cliquei primeiro, mas se for em if, ele sempre executará o primeiro IF. Exemplo:

Código:
if (B)
   jsfjiejf;
else if (A)
   igkjrgijk;

Não importa se eu clico primeiro o A, ele sempre executa o B, ignorando o A.


O que eu quero é que o A se sobreponha apenas por eu ter clicado primeiro nele. Mas o mesmo aconteceria caso eu clicasse no B primeiro.
NKKF
NKKF
ProgramadorMaster

Masculino PONTOS : 2660
REPUTAÇÃO : 482
Idade : 15
Áreas de atuação : Error 404 Not Found.
Respeito as regras : Histórico de Input Aad8pUi

http://www.projetounity.esy.es

Voltar ao Topo Ir em baixo

DÚVIDA Re: Histórico de Input

Mensagem por luiz12345 em Sab Mar 30, 2019 1:17 pm

acho que entendi, tente algo parecido com isto:

public string Prioridade = "Nenhuma";


if(Prioridade == "Nenhuma"){
  if(input.getkeydown(A)){ // utilize o getkeydown.
    Prioridade = "A";
    Return;
    }
  if(input.getkeydown(B)){
    Prioridade = "B";
    Return;
    }
}

if(Prioridade == "A"){
  a coisa que vc quer executar;


  if(Input.getkeyup(A){
    Prioridade = "Nenhuma";
    return;//isto talvez nem seja necessario
    }
}


if(Prioridade == "B"){
  a coisa que vc quer executar;


  if(Input.getkeyup(B){
    Prioridade = "Nenhuma";
    Return;
    }
}
//acho que vc entendeu a ideia





este código seta uma string para a primeira tecla clicada, depois é impossível setar esta string ate ela ser des-clicada, com isto é possível checar um clique por vez.
 acho que era isso que você queria desculpe se eu n tiver entendido.
luiz12345
luiz12345
MembroAvançado

Masculino PONTOS : 1433
REPUTAÇÃO : 16
Idade : 18
Áreas de atuação : Programação, Modelagem 3D, Criação De Jogos Digitais.
Respeito as regras : Histórico de Input WvDYdlf

https://discord.gg/8b8bGyY

Voltar ao Topo Ir em baixo

DÚVIDA Re: Histórico de Input

Mensagem por Isabela em Sab Mar 30, 2019 11:14 pm

Vamos lá, se entendi bem, você quer poder clicar em várias teclas, e quer que cada ação seja executada na ordem que você apertou, não importa quantas ações ou quanto tempo leve.
Tentei implementar usando List como o @MarcosSchultz recomendou, como eu ainda tô começando na programação, pode haver algo mal otimizado, então aceito sugestões de melhora :3

Código Antigo:

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class HistoricoInputs : MonoBehaviour
{
    private List<char> historico;
    private bool trava = false;
    private float tempo = 0;

    private void Start()
    {
        historico = new List<char>();
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.UpArrow))
        {
            AdicionarHistorico('A');
            if (trava == false)
                StartCoroutine(Espera());
        }
        if (Input.GetKeyDown(KeyCode.DownArrow))
        {
            AdicionarHistorico('B');
            if (trava == false)
                StartCoroutine(Espera());
        }
        if (Input.GetKeyDown(KeyCode.RightArrow))
        {
            AdicionarHistorico('C');
            if (trava == false)
                StartCoroutine(Espera());
        }
        if (Input.GetKeyDown(KeyCode.LeftArrow))
        {
            AdicionarHistorico('D');
            if (trava == false)
                StartCoroutine(Espera());
        }

    }

    private void AdicionarHistorico(char indexAcao)
    {
        historico.Add(indexAcao);
    }

    private void ExecutarAcaoA()
    {
        tempo = 2;
        //Ação A

    }

    private void ExecutarAcaoB()
    {
        tempo = 3;
        //Ação B
    }

    private void ExecutarAcaoC()
    {
        tempo = 4;
        //Ação C
    }

    private void ExecutarAcaoD()
    {
        tempo = 5;
        //Ação D
    }

    IEnumerator Espera()
    {
        trava = true;
        print("Executando Acao " + historico[0] + "...");
        switch (historico[0])
        {
            case 'A':
                ExecutarAcaoA();
                break;
            case 'B':
                ExecutarAcaoB();
                break;
            case 'C':
                ExecutarAcaoC();
                break;
            case 'D':
                ExecutarAcaoD();
                break;
            default:
                break;
        }
        yield return new WaitForSeconds(tempo);
        print("Acao " + historico[0] + " concluida!\n\n");
        historico.RemoveAt(0);

        if (historico.Count > 0)
        {
            StartCoroutine(Espera());
        }
        else
        {
            trava = false;
        }
    }
}



Basicamente tenho 4 ações (A,B,C,D) que são chamadas respectivamente pelas teclas de seta (Pra cima, pra baixo, direita, esquerda).
Se você apertar mais de uma ação, ela vai aguardar a atual ser executada e só então irá pra próxima...
Achei que seria legal poder personalizar o tempo de cada ação, então se você quiser, basta alterar dentro de cada método "ExecutarAção"
Cheers Boooa Noiteee!

#edit
 
Depois que postei percebi que o tempo permanece o mesmo se houver mais de uma ação a ser executada, Segue abaixo as correções:

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class HistoricoInputs : MonoBehaviour
{
    private List<char> historico = new List<char>();
    private bool trava = false;
    private float tempo = 0;
    private float tempoA = 2, tempoB = 3, tempoC = 4, tempoD = 5;

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.UpArrow))
            AdicionarHistorico('A');         
        if (Input.GetKeyDown(KeyCode.DownArrow))
            AdicionarHistorico('B');           
        if (Input.GetKeyDown(KeyCode.RightArrow))
            AdicionarHistorico('C');
        if (Input.GetKeyDown(KeyCode.LeftArrow))
            AdicionarHistorico('D');
    }

    private void AdicionarHistorico(char acao)
    {
        historico.Add(acao);
        if (trava == false)
            StartCoroutine(ExecutarAcao());
    }

    private void AcaoA()
    {
        //Ação A       
    }

    private void AcaoB()
    {
        //Ação B
    }

    private void AcaoC()
    {
        //Ação C
    }

    private void AcaoD()
    {
        //Ação D
    }

    IEnumerator ExecutarAcao()
    {
        trava = true;
        print("Executando Acao "+historico[0]+"...");
        if (historico[0] == 'A') {
            AcaoA();
            tempo = tempoA;
        }
        else if (historico[0] == 'B') {
            AcaoB();
            tempo = tempoB;
        }
        else if (historico[0] == 'C') {
            AcaoC();
            tempo = tempoC;
        }
        else if (historico[0] == 'D') {
            AcaoD();
            tempo = tempoD;
        }
        yield return new WaitForSeconds(tempo);
        print("Acao "+ historico[0] +" concluida!");       
        historico.RemoveAt(0);

        if (historico.Count > 0)
            StartCoroutine(ExecutarAcao());
        else
            trava = false;
    }
}


Última edição por Isabela em Dom Mar 31, 2019 11:58 am, editado 5 vez(es)

Isabela
ProgramadorMaster

Feminino PONTOS : 997
REPUTAÇÃO : 255
Idade : 19
Respeito as regras : Histórico de Input Aad8pUi

Voltar ao Topo Ir em baixo

DÚVIDA Re: Histórico de Input

Mensagem por Magnatah em Sab Mar 30, 2019 11:19 pm

Spoiler:

@Isabela escreveu:Vamos lá, se entendi bem, você quer poder clicar em várias teclas, e quer que cada ação seja executada na ordem que você apertou, não importa quantas ações ou quanto tempo leve.
Tentei implementar usando List como o @MarcosSchultz recomendou, como eu ainda tô começando na programação, pode haver algo mal otimizado, então aceito sugestões de melhora :3

Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class HistoricoInputs : MonoBehaviour
{
    private List<char> historico;
    private bool trava = false;
    private float tempo = 0;

    private void Start()
    {
        historico = new List<char>();
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.UpArrow))
        {
            AdicionarHistorico('A');
            if (trava == false)
                StartCoroutine(Espera());
        }
        if (Input.GetKeyDown(KeyCode.DownArrow))
        {
            AdicionarHistorico('B');
            if (trava == false)
                StartCoroutine(Espera());
        }
        if (Input.GetKeyDown(KeyCode.RightArrow))
        {
            AdicionarHistorico('C');
            if (trava == false)
                StartCoroutine(Espera());
        }
        if (Input.GetKeyDown(KeyCode.LeftArrow))
        {
            AdicionarHistorico('D');
            if (trava == false)            
                StartCoroutine(Espera());
        }
        
    }

    private void AdicionarHistorico(char indexAcao)
    {
        historico.Add(indexAcao);
    }

    private void ExecutarAcaoA()
    {
        tempo = 2;
        //Ação A
        
    }

    private void ExecutarAcaoB()
    {
        tempo = 3;
        //Ação B
    }

    private void ExecutarAcaoC()
    {
        tempo = 4;
        //Ação C
    }

    private void ExecutarAcaoD()
    {
        tempo = 5;
        //Ação D
    }

    IEnumerator Espera()
    {
        trava = true;
        print("Executando Acao "+historico[0]+"...");
        switch (historico[0])
        {
            case 'A':
                ExecutarAcaoA();
                break;
            case 'B':
                ExecutarAcaoB();
                break;
            case 'C':
                ExecutarAcaoC();
                break;
            case 'D':
                ExecutarAcaoD();
                break;
            default:
                break;
        }
        yield return new WaitForSeconds(tempo);
        print("Acao "+ historico[0] +" concluida!\n\n");        
        historico.RemoveAt(0);

        if (historico.Count > 0)
        {
            StartCoroutine(Espera());
        }
        else
        {
            trava = false;
        }
    }
}

Basicamente tenho 4 ações (A,B,C,D) que são chamadas respectivamente pelas teclas de seta (Pra cima, pra baixo, direita, esquerda).
Se você apertar mais de uma ação, ela vai aguardar a atual ser executada e só então irá pra próxima...
Achei que seria legal poder personalizar o tempo de cada ação, então se você quiser, basta alterar dentro de cada método "ExecutarAção"
:cheers:Boooa Noiteee!

Já To Salvando Esse Script, Pois Assim Que Comecei Na Unity Eu Precisava De Algo Parecido.  Laughing
Magnatah
Magnatah
Instrutor

Masculino PONTOS : 1243
REPUTAÇÃO : 104
Idade : 24
Áreas de atuação : Dєรєиvσlvєdσя Wєb(Fяσит-єиd), Blєиdєя, υиiтy, C#, ρнρ є Jαvαรcяiρт.
Respeito as regras : Histórico de Input Aad8pUi

https://magnuspage.000webhostapp.com/index.php

Voltar ao Topo Ir em baixo

DÚVIDA Re: Histórico de Input

Mensagem por NotoriousDev em Seg Abr 01, 2019 9:50 am

@NKKF escreveu:Oi pessoal.

Eu queria fazer com que meu jogador tivesse um "histórico de inputs", porque ele se move à cada 1 clique no WASD e ele faz uma animação que demora uns 0.8 segundos, então se o usuário apertar bem rápido ele esquece alguns movimentos que deveria ter feito (Já que o usuário clicou, por isso o histórico seria necessário).. Alguém tem alguma ideia de como fazer isso?
Pode armazenar os botões clicados em uma List, como é o caso que o Marcos disse, e usar o Linq para verificar se ele foi clicado, e se calhar, usar um timer para remover ele da lista para poder repetir o processo novamente.
NotoriousDev
NotoriousDev
Desenvolvedor

Masculino PONTOS : 1594
REPUTAÇÃO : 38
Idade : 24
Áreas de atuação : Programação C#
Respeito as regras : Histórico de Input WvDYdlf

http://127.0.0.1

Voltar ao Topo Ir em baixo

DÚVIDA Re: Histórico de Input

Mensagem por Weslley em Seg Abr 01, 2019 11:29 am

Fiz algo aqui bem simples!

Código:
//animator
public Animator animator;
//historico de botoes precionados
Queue<KeyCode> m_HistoryInputs = new Queue<KeyCode>();
//tabela de consulta de ações já previamente registradas
private Dictionary<KeyCode, Action> m_LookupTable = new Dictionary<KeyCode, Action>();
//proxima acão
private bool m_Next;

private void Start()
{
    //adicionado ações para cada chave
    //a chave é o KeyCode(botão) precionado
    m_LookupTable.Add(KeyCode.W, delegate { print("W"); animator.SetTrigger("teste"); });
    m_LookupTable.Add(KeyCode.A, delegate { print("A"); animator.SetTrigger("teste"); });
    m_LookupTable.Add(KeyCode.S, delegate { print("S"); animator.SetTrigger("teste"); });
    m_LookupTable.Add(KeyCode.D, delegate { print("D"); animator.SetTrigger("teste"); });
    m_Next = true;
}

private void Update()
{
    //verificando sé existe ações na fila é sé pode executar a ação
    if (m_HistoryInputs.Any() && m_Next)
    {
        //remove o indice 0 do historico
        //setando o indice 0 em current
        KeyCode current = m_HistoryInputs.Dequeue();

        //verificando sé existe esse botão na tabela
        if (m_LookupTable.ContainsKey(current))
        {
            //verificando sé a ação não é nula
            if (m_LookupTable[current] != null)
                //executando a ação
                m_LookupTable[current].Invoke();

            //esperar a animação acabar
            StartCoroutine(OnCompleteAnimation());
        }
    }
}

/// <summary>
/// Setar m_Next = true quando a animação atual acabar
/// </summary>
/// <returns>WaitForSeconds</returns>
IEnumerator OnCompleteAnimation()
{
    //proxima ação
    m_Next = false;

    if (animator != null)
    {
        //esperar o tempo da animação atual!
        yield return new WaitForSeconds(animator.GetCurrentAnimatorStateInfo(0).length);
        //proxima ação
        m_Next = true;
    }
    else
        //proxima ação
        m_Next = true;
}

void OnGUI()
{
    //verificando sé o botão precionadado e do teclado e se é KeyDown
    if (Event.current.isKey && Event.current.type == EventType.KeyDown)
    {
        //pegando o botão precionado
        KeyCode current = Event.current.keyCode;
        //verificando sé existe esse botão na tabela
        if (m_LookupTable.ContainsKey(current))
            //adicionado o botão na fila
            m_HistoryInputs.Enqueue(current);
    }
}
Weslley
Weslley
Moderador

Masculino PONTOS : 3677
REPUTAÇÃO : 674
Idade : 21
Áreas de atuação : https://weslleyfx.itch.io/
https://play.google.com/store/apps/dev?id=4937415175307699867
https://www
Respeito as regras : Histórico de Input Aad8pUi

Voltar ao Topo Ir em baixo

DÚVIDA Re: Histórico de Input

Mensagem por NKKF em Seg Abr 01, 2019 4:00 pm

Opa, tudo bem? Então, quando eu disse animação, não é o Animator que a própria unity usa, o meu objeto só faz uma simples rotação (O que eu chamo de rotação, eu acho, que é assim que diz, né?). E então, como eu faço desse jetio?

Valeu pelas respostas pessoal, e desculpe-me pela má explicação..
NKKF
NKKF
ProgramadorMaster

Masculino PONTOS : 2660
REPUTAÇÃO : 482
Idade : 15
Áreas de atuação : Error 404 Not Found.
Respeito as regras : Histórico de Input Aad8pUi

http://www.projetounity.esy.es

Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum