oque acontece no código, pelo que eu entendi, é que AleatorizarPosicao manda os seus valores pro posicaoAleatoria quando usa o return, mas se é isso então porque simplesmente não coloca sozinho o AleatorizarPosicao no void Vagar? não daria o mesmo resultado? sem o return claro
 void Vagar ()
{
    posicaoAleatoria = AleatorizarPosicao();
}
 Vector3 AleatorizarPosicao ()
    {
        Vector3 posicao = Random.insideUnitSphere * 10;
        posicao += transform.position;
        posicao.y = transform.position.y;
        return posicao;
    }