Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Warning: Can't normalize zero vector

Olá, percebi enquanto programa o jogo que pelo console ele fica recebendo um "warning: can't normalize zero vector", creio eu que está relacionado ao modo como o jogador e o zumbi estão se locomovendo pelo vec2. E também as animações de direita, esquerda, cima e baixo não estão sendo exibidas e sim somente as diagonais. Baixei o código do capitulo 5 para ver se eu não tinha feito algo errado mas o problema persiste... Outra coisa que percebi que a jogadora apresenta esse problema logo após do capítulo de fazer ela seguir o mouse para atirar, antes disso somente o zumbi apresentava isso. Será algo diferente da minha versão do cocos que é a 1.7.0 ? Testei navegadores diferentes e continua. Algum jeito de solucionar?

3 respostas
solução!

A questão do warning está relacianada com a maneira com q fazemos a jogadora se mover. Cmo zeramos o vetor direção antes de verificar o input do teclado, caso nenhuma tecla esteja pressionada, passamos um vec2.Zero para o componente Movimentação q tenta normalizar o vetor. So que é impossivel normalizar um vetor com x e y iguais a 0

Com relaçao as animações, se voce seguiu exatamente o que fizemos no curso, as animações só iram aparecer na diagonal mesmo. Isso vai ser arrumado em um curso que está sendo editado.

Acontece q as animaçoes ortogonais(cima, baixo, direita e esqueda) só irão ser executadas quando o vetor direção tiver o eixo x, ou y, exatamente iguais a 0. So q isso é muito difícil ja que, se o valor for 0,00001 o pc ja considera ele diferente de zero.

Para arrumar isso damos uma "folga" nessa verificação, fazendo com q se eu um valor de x ente -0.2 e 0.2, por exemplo, ele desconsidera esse eixo.

Espero ter ajudado

Isso aí mesmo, foi exatamente o que eu acabei fazendo.. mexi nos valores da verificação dos eixos x e y lá da classe de controle de animações


        if (direcao.x > 15) {
            proximaAnimacao += "Direita";
        } else if (direcao.x < -5) {
            proximaAnimacao += "Esquerda";
        }

        if (direcao.y > 30) {
            proximaAnimacao += "Cima";
        } else if (direcao.y < -10) {
            proximaAnimacao += "Baixo";
        }

só aumentei um pouco essa verificação e foi suficiente pra ver as animações, nada muito elegante hehe Opa que bom! ficarei no aguardo pq é bem divertido mexer com a cocos

Q bom você está gostando de mexer com a Cocos. Vc fez de uma maneira q funciona, mas acho q vai gostar da solução q arrumamos para o curso. Acabamos tendo mais controle sobre quando a animação será executada.