[SOLVED] Buoyancy system with wave

Hello, i hope you can help me with this problem.
I wrote a buoyancy system with waves, but i have a problem for synchronize waves and buoyancy.

I would like that the object go up and down with wave’s movement and continue with buoyancy.

This is for waves

private void wave()
    {
        if (GetComponent<MeshFilter>() != null) {
            Mesh mesh = GetComponent<MeshFilter>().mesh;

            Vector3[] vertices = mesh.vertices;

            for (int i = 0; i < vertices.Length; i++)
            {
                Vector3 globalPosition = transform.TransformPoint(vertices[i]);

                Vector3 globalPositionVertexProject = projectPointOntoSurface(globalPosition);

                Vector3 localPosition = transform.InverseTransformPoint(globalPositionVertexProject);

                vertices[i] = localPosition;
            }

            mesh.vertices = vertices;

            mesh.RecalculateNormals();
            mesh.RecalculateBounds();
        }
    }

    private Vector3 projectPointOntoSurface(Vector3 globalPosition)
    {
        return new Vector3(globalPosition.x, GetComponent<Collider>().bounds.max.y + waveAmplitude * (waveLogic(globalPosition) - 1.0f), globalPosition.z);
    }
   
    public float relativeHeightAtPoint(Vector3 globalPosition)
    {
        return GetComponent<Collider>().bounds.size.y + waveAmplitude * (waveLogic(globalPosition) - 1.0f);
    }

    private float waveLogic(Vector3 globalPosition)
    {
        return Mathf.Sin(globalPosition.x * 0.5f + Time.time) * 0.8f + Mathf.Sin(globalPosition.z * 0.5f + Time.time) * 0.2f;
    }

This is for buoyancy

void FixedUpdate()
    {
        wave();

        foreach (KeyValuePair<string, WaterObject> entry in elements)
        {
            foreach (Vector3 position in entry.Value.voxels)
            {
                Vector3 globalPosition = entry.Value.collider.transform.TransformPoint(position);
               
                if (globalPosition.y < waterLevel)
                {
                    float k = (waterLevel - globalPosition.y);

                    if (k > 1)
                    {
                        k = 1f;
                    }
                    else if (k < 0)
                    {
                        k = 0f;
                    }

                    float archimedeForce = waterDensity * Mathf.Abs(Physics.gravity.y) * entry.Value.volume;
                    Vector3 archimedeLocalForce = new Vector3(0, archimedeForce, 0) / entry.Value.voxels.Count;

                    Vector3 velocity = entry.Value.rigidbody.GetPointVelocity(globalPosition);
                    Vector3 damping = -velocity * 0.1f * entry.Value.rigidbody.mass;
                    entry.Value.force = damping + (Mathf.Sqrt(k) * archimedeLocalForce);
                   
                    //float rp = relativeHeightAtPoint(globalPosition);
                    //entry.Value.force.y = entry.Value.force.y - ((waterLevel - rp) * 2);

                    entry.Value.rigidbody.AddForceAtPosition(entry.Value.force, globalPosition);
                }
            }
        }
    }

Thanks for your help!

Solved, i use different force…thanks at all!