Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Bug] Zumbis estão constantemente indo para a posição 0, 0, 0 após o comando Vagar()

Olá, estou com um problema no meu jogo após a função de Vagar() ter sido construída. Os zumbis rapidamente viram na direção aleatória em que eles deveriam andar, mas logo em seguida travam sua rotação em direção ao ponto 0, 0, 0 e andam até o mesmo. Aqui segue o código:

FixedUpdate:

void FixedUpdate()
    {
        float distance = Vector3.Distance(playerDirection.transform.position, transform.position);

        charMovement.Rotate(zombieRigidBody, direction);
        charAnimation.Moving(zombieAnimator,direction.magnitude);

        if(distance > 15)
        {
            Wander();
        }
        else if(distance > 2.5f)
        {
            direction = playerDirection.transform.position - transform.position;

            charMovement.Move(zombieRigidBody, direction, zombieStatus.velocity);
    
            charAnimation.Attack(zombieAnimator, false);

        }
        else
        {
            charAnimation.Attack(zombieAnimator, true);
        }
    }

Vagar:

void Wander()
    {
        wanderCounter -= Time.deltaTime;
        if(wanderCounter <= 0)
        {
            randomPosition = RandomizePosition();
            wanderCounter += randomPositionCD;
            Debug.DrawLine(transform.position, randomPosition);
        }

        bool closeEnough = Vector3.Distance(transform.position, randomPosition) <= 0.05f;
        
        Debug.Log(closeEnough);
        if(closeEnough == false)
        {
            direction = randomPosition -= transform.position;
            charMovement.Move(zombieRigidBody, direction, zombieStatus.velocity);
        }
    }

Posição Aleatoria:

Vector3 RandomizePosition()
    {
        Vector3 position = Random.insideUnitSphere * 10;
        position += transform.position;
        position.y = transform.position.y;

        return position;
    }

Ja tentei algumas coisas como não permitir com que a posição aleatória no return seja Vector3.zero, mas ainda assim não funcionou. Também coloquei alguns Debug.Log pra me mostrar se a direção que estava sendo passada era correta, e ao que tudo indica ele passa a direção certa mas em algum momento ela vira 0, 0, 0.

1 resposta
solução!

Não sei como excluir o tópico, mas consegui resolver apenas reescrevendo o código.

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