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:
Referência nula em variável Int
Como Deixar O Jogo Mais "Limpo" De Se Jogar?
[____TÓPICO LIVRE____] FALE O QUE QUISER (Parte 2)
Escalar paredes
Alguém sabe um modo fazer o PlayerPrefs funcionar no linux?
Jogo Way To Victory
Ajuda com Duvida Sobre Os Angulos no Unity
SISTEMA SIMPLES DE VEICULO UNITY 5
[RESOLVIDO] Usar Regex para remover um ponto "."
Transição de Fases
Dúvida WEBGL
Doom 3 - rodando em WebAssembly
SOU MODELADOR SE TIVER ALGUEM PRECISANDO AI ME CONTATE
[TUTORIAL] Como Usar O Forum
[TUTORIAL] Texto Legenda Character Por Character Para Uso Básico
Script de tiro de um determinado local, armadilha
Link Prefabs??
[Projeto] Omega Racers
[DUVIDA] Acresentar int ao segurar botão
Html 5
Como desativar o retorno do microfone?
Duvida Sobre Animacoes
luz e luzes do carro
ALGUEM PODE ME DAR UMA AJUDA AQUI COM UM SCRIPT??
Standart assents
ESTOU PRECISANDO DE UMA AJUDA COM UM SCRIPT
[TUTORIAL] Script super simples Para ficar de Dia e de Noite Automaticamente.
Vocês Já Ficaram Com Vontade De Jogar Algum Jogo Criado ?
Principais Erros Q O Console Da Unity Avisa?
Unity não vem com Character Controller
Como Altera a Emissão do Material Por Script
Destruir um inimigo e mudar de cena para o fim do jogo
ALGUEM PODE ME AJUDAR COM UM SCRIPT ????? :) :) :) :)
Problema com dano aos inimigos
[TUTORIAL] Como Hospedar jogos em WEBGL UNITY
Duvida Sobre posição de objetos dentro do Scroll View Canvas
Botão UI pressionar tecla do teclado?
[TUTORIAL] Joystick vistual para mobile
Converter Controle telcado para Celular
[TUTORIAL] Entrar no carro estilo GTA
(Ajuda) Verificação do cronômetro
[TUTORIAL] 42 ÓTIMAS DICAS DE OTIMIZAÇÃO PARA JOGOS MOBILE (Android)
13º Andar, jogo indie completo!
Uma das principais razões pelas quais desenvolvedores fracassam
Select File Runtime Android Unity3D
Sistema De Paraquedas Em C#, Como Fazer?
[Projeto em Andamento] Brazil Combat
Game Engine
Gostaria de saber se já tem como colocar esse carro como mod no Spintires Mudrunners
COMBUSTIVEL
[TUTORIAL] Sistema Pdv, Mercado, Padaria, Conveniência, Lojas Em Geral - C# VISUAL STUDIO
[TUTORIAL] C# .NET | Instalar IDE para compilar c# para outras plataformas
Inimigo seguir o player
Guia PBR - Luz e Matéria: A teoria da renderização e sombreamento
player pulando eternamente quando dentro de um trigger colllider, como corrigir isso? 2D
[TUTORIAL] Inimigo que segue player enquanto player está vendo
Formação de Equipe ( Favela Killer)
Hengor meu MMORPG indie
[TUTORIAL] Sistema Simples de Falas
Como criar macro com tempo no Windows
Gente estou com dúvida de como que faz o sistema do personagem (First Person)
Chamar variavel em outra script para chama-lo ao slide
Limite de spawn e respawn de inimigos
Command 888
(DUVIDA)Privacy Policy e Terms of use
[TUTORIAL] Como fazer um TELEPORTE
Verificar se outro objeto tem um script usando o raycasy
alguem pode ajudar com um problema xbox live
Unity: Não consigo criar meu projeto
Asset Store Está Recusando Meus Modelos 3D
Construção estilo Minecraft DUVIDA
Arma atravessando paredes - AJUDA
Sites de efeitos sonoros
Sistema de skin (Player) Sprite Renderer
Inserir animação em certos elemento
Som de passos 3º pessoas Unity C#
Ui só em tal lugar
Duvida sobre menu
como faco para spawnar a vida do inimigo junto com ele direto do prefabe
Freio Motor De Caminhão
Segurar item na mão e dropar item.
Como que faço para transformar um Vector3 em transform.position?
Textura aplicada na objeto mas não aparece
CharacterController não interage com Box Colliders.
Dúvida sobre pagamento de direitos autorais
Sistema de foco na Unity.
Rotação de sprite dentro do canvas (deformação)
duvida conta no banco inter
Flamehead MMORPG Indie
Colisoes na Unity
diminuir a vida do enemy que esta coollidindo com o player ,combase nos niveis
[RESOLVIDO] Exportar do blender para 3D Max?
[TUTORIAL] Unity 5 - Como criar o próprio FPS Controller
ARRAYS
[TUTORIAL] Controle 3ª pessoa com animações mecânicas (root motion)
Problema com sprite na unity
[RESOLVIDO] Preciso de ajuda com joystic para personagem 2D
Spawn Random simultâneo em pontos específicos
erro no scripts de dano no player 2D
Hoje à(s) 5:49 pm
Hoje à(s) 5:39 pm
Hoje à(s) 5:17 pm
Hoje à(s) 5:02 pm
Hoje à(s) 3:23 pm
Hoje à(s) 2:25 pm
Hoje à(s) 12:05 pm
Hoje à(s) 12:04 pm
Hoje à(s) 11:58 am
Hoje à(s) 11:25 am
Hoje à(s) 11:18 am
Hoje à(s) 10:50 am
Hoje à(s) 9:37 am
Hoje à(s) 2:51 am
Hoje à(s) 2:43 am
Hoje à(s) 2:14 am
Hoje à(s) 1:56 am
Ontem à(s) 9:34 pm
Ontem à(s) 9:30 pm
Ontem à(s) 9:29 pm
Ontem à(s) 9:00 pm
Ontem à(s) 8:28 pm
Ontem à(s) 7:40 pm
Ontem à(s) 7:37 pm
Ontem à(s) 5:45 pm
Ontem à(s) 3:48 pm
Ontem à(s) 3:34 pm
Ontem à(s) 1:33 pm
Ontem à(s) 12:23 pm
Qui Jul 18, 2019 6:47 pm
Qui Jul 18, 2019 6:36 pm
Qui Jul 18, 2019 5:03 pm
Qui Jul 18, 2019 4:59 pm
Qui Jul 18, 2019 2:56 pm
Qui Jul 18, 2019 2:55 pm
Qua Jul 17, 2019 7:37 pm
Qua Jul 17, 2019 7:20 pm
Qua Jul 17, 2019 6:04 pm
Qua Jul 17, 2019 4:34 pm
Qua Jul 17, 2019 4:04 pm
Qua Jul 17, 2019 2:29 pm
Qua Jul 17, 2019 10:45 am
Qua Jul 17, 2019 10:43 am
Qua Jul 17, 2019 9:13 am
Ter Jul 16, 2019 9:19 pm
Ter Jul 16, 2019 8:40 pm
Ter Jul 16, 2019 8:14 pm
Ter Jul 16, 2019 5:24 pm
Ter Jul 16, 2019 5:19 pm
Ter Jul 16, 2019 3:59 pm
Ter Jul 16, 2019 2:19 pm
Ter Jul 16, 2019 1:56 pm
Ter Jul 16, 2019 1:44 pm
Ter Jul 16, 2019 10:36 am
Ter Jul 16, 2019 1:24 am
Seg Jul 15, 2019 2:29 pm
Seg Jul 15, 2019 12:36 pm
Seg Jul 15, 2019 12:25 pm
Sab Jul 13, 2019 10:12 pm
Sab Jul 13, 2019 10:12 pm
Sab Jul 13, 2019 8:13 pm
Sab Jul 13, 2019 7:50 pm
Sab Jul 13, 2019 7:07 pm
Sab Jul 13, 2019 12:34 pm
Sab Jul 13, 2019 10:54 am
Sex Jul 12, 2019 7:51 pm
Sex Jul 12, 2019 4:22 pm
Sex Jul 12, 2019 3:32 pm
Sex Jul 12, 2019 1:56 pm
Qui Jul 11, 2019 8:50 pm
Qui Jul 11, 2019 7:41 pm
Qui Jul 11, 2019 7:38 pm
Qui Jul 11, 2019 6:32 pm
Qua Jul 10, 2019 11:58 pm
Qua Jul 10, 2019 8:34 pm
Qua Jul 10, 2019 6:11 pm
Ter Jul 09, 2019 10:55 pm
Ter Jul 09, 2019 10:09 pm
Ter Jul 09, 2019 8:28 pm
Ter Jul 09, 2019 7:23 pm
Ter Jul 09, 2019 5:19 pm
Seg Jul 08, 2019 7:27 pm
Seg Jul 08, 2019 6:26 pm
Seg Jul 08, 2019 3:01 pm
Seg Jul 08, 2019 1:51 pm
Seg Jul 08, 2019 8:10 am
Seg Jul 08, 2019 2:56 am
Seg Jul 08, 2019 12:09 am
Dom Jul 07, 2019 8:38 pm
Dom Jul 07, 2019 3:52 pm
Dom Jul 07, 2019 10:09 am
Dom Jul 07, 2019 8:53 am
Dom Jul 07, 2019 1:13 am
Sab Jul 06, 2019 11:40 pm
Sab Jul 06, 2019 9:07 pm
Sab Jul 06, 2019 11:57 am
Sab Jul 06, 2019 11:54 am
Sab Jul 06, 2019 11:47 am
Sab Jul 06, 2019 11:37 am
guimaraf
Tegh
Tegh
Projeto Residentes Evil
Magnatah
luckas211
nibirou
Alerson Software
luiz12345
guimaraf
guimaraf
poyser
XxzeroChinxX 999
Magnatah
vitorhugo
Magnatah
Magnatah
guimaraf
Diguinho
guimaraf
lesgoy
Projeto Residentes Evil
Magnatah
Magnatah
Magnatah
gutovic29
ademirggplay
Magnatah
JohnRambo
SteveRogers
Magnatah
luckas211
luckas211
Gustavo L1m4
RAFAELhentay
Dark_The_King
Diguinho
Daniel Dória
Johnatasdasilva
brunaeandersoncosmeticos@
poyser
Magnatah
Patrick
Tegh
GramadoOrc
Projeto Residentes Evil
thales.ulisses
Chilinger
brunos sou
Alerson Software
Chilinger
Chilinger
Chilinger
Magnatah
mathhBR
FantasmaFX
zeca urubu
Callyde Jr
Magnatah
lesgoy
Magnatah
Magnatah
Blandbrute6677
Callyde Jr
poyser
mama2401
diegopds
diegopds
Callyde Jr
Magnatah
rafaelllsd
rafaelllsd
poyser
luckas211
ffabim
merike11
iToddy
poyser
guimaraf
yurinogueira
Ed Mafi
Ed Mafi
Ed Mafi
LúcioHenrique098
eduardonog30
ruanzikaad
danielPedra90
MarcosSchultz
Magnatah
Magnatah
Magnatah
TioUV
LúcioHenrique098
MarcosSchultz
luckas211
poyser
poyser
guimaraf
luckas211

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 : 2510
REPUTAÇÃO : 473
Idade : 14
Áreas de atuação : Error 404 Not Found.
Respeito as regras : Histórico de Input Aad8pUi

Ver perfil do usuário 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 : 1314
REPUTAÇÃO : 15
Idade : 18
Áreas de atuação : Programação, Modelagem 3D, Criação De Jogos Digitais.
Respeito as regras : Histórico de Input WvDYdlf

Ver perfil do usuário 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 : 1314
REPUTAÇÃO : 15
Idade : 18
Áreas de atuação : Programação, Modelagem 3D, Criação De Jogos Digitais.
Respeito as regras : Histórico de Input WvDYdlf

Ver perfil do usuário 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 : 2510
REPUTAÇÃO : 473
Idade : 14
Áreas de atuação : Error 404 Not Found.
Respeito as regras : Histórico de Input Aad8pUi

Ver perfil do usuário 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 : 61999
REPUTAÇÃO : 2275
Idade : 22
Áreas de atuação : Administrador do fórum
Respeito as regras : Histórico de Input Aad8pUi

Ver perfil do usuário 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 : 2510
REPUTAÇÃO : 473
Idade : 14
Áreas de atuação : Error 404 Not Found.
Respeito as regras : Histórico de Input Aad8pUi

Ver perfil do usuário 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 : 1314
REPUTAÇÃO : 15
Idade : 18
Áreas de atuação : Programação, Modelagem 3D, Criação De Jogos Digitais.
Respeito as regras : Histórico de Input WvDYdlf

Ver perfil do usuário 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 : 876
REPUTAÇÃO : 252
Idade : 19
Respeito as regras : Histórico de Input Aad8pUi

Ver perfil do usuário

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
ProgramadorMaster

Masculino PONTOS : 982
REPUTAÇÃO : 72
Idade : 23
Á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

Ver perfil do usuário 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 : 1475
REPUTAÇÃO : 37
Idade : 23
Áreas de atuação : Programação C#
Respeito as regras : Histórico de Input WvDYdlf

Ver perfil do usuário 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 : 3552
REPUTAÇÃO : 669
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

Ver perfil do usuário

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 : 2510
REPUTAÇÃO : 473
Idade : 14
Áreas de atuação : Error 404 Not Found.
Respeito as regras : Histórico de Input Aad8pUi

Ver perfil do usuário 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