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.