Ну написал простой код чтоб деформировать сферу по клику мишки. Вдавливать или наоборот
Код
void DeformationMesh(Vector3 point)
{
MeshFilter meshFilter = GetComponent<MeshFilter>();
Mesh mesh = meshFilter.mesh;
Vector3[] vertices = mesh.vertices;
Vector3 localpoint = transform.worldToLocalMatrix.MultiplyPoint(point);
for (int i = 0; i < vertices.Length; i++)
{
float distance = (localpoint - vertices[i]).sqrMagnitude;
float distanceToMidle = (vertices[i]).sqrMagnitude;
if (distance < MAXDEFORMDISTANCE*MAXDEFORMDISTANCE && distanceToMidle < 0.36f && distanceToMidle > 0.09f)
{
vertices[i] = Vector3.LerpUnclamped(vertices[i], Vector3.zero, (slider.value-1)*0.01f*Mathf.Pow(1-distance/(MAXDEFORMDISTANCE*MAXDEFORMDISTANCE),3));
}
}
mesh.vertices = vertices;
MeshCollider meshCollider = GetComponent<MeshCollider>();
meshCollider.sharedMesh = mesh;
}
Проблема в том что сетка колайдера не обновляется. То есть я нахожу вершины которые задеваю кликом непосредственно из RaycastHit.Point. Значит мне нужно обновлять колайдер после каждого деформирования. как это можно сделать?