1
resposta

Array[i]

Eu to tentando fazer um jogo que quando eu apertar Q ele vai pegar algum o valor posterior da array mas por algum motivo isso ta dando errado.

int[] valorX = { 400, 450, 452};  
 int[] valorY = { 300, 300, 340 };

     if (Input.GetKeyDown(KeyCode.Q))
        {
            for (int i = 0; i <= 3; i++)
            {
                forcaX = valorX[i];
                forcaY = valorY[i];
            }
        }
        ForcaTotalX = forcaX + 300f;
        ForcaTotalY = forcaY; 
1 resposta

Olá José.

Seus vetores têm 3 posições cada. Quando você faz um laço que inicia i = 0 e continua executando esse bloco enquanto i <= 3, você vai pegar valores dos vetores nas posições: 0, 1, 2 e 3! Na quarta posição (índice 3, não esqueça do 0...), seu código vai disparar uma exceção IndexOutOfRangeException` porque o vetor só tem 3 posições.

Uma forma de corrigir esse problema é mudando o símbolo de <= para <. Assim, você não tentará pegar o valor da quarta posição que não existe no seu vetor.

[]'s.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software