- Home /
Manipulating vertices through colliders
Hey, I'm experimenting with Fog of War and trying a different approach than the usual raycast/transparency. I have a plane's vertices stored in an Vector3 array. I also have a sphere collider that checks if there are any vertices in it and if there are, submerge them by putting their Y on -1.
Now the mesh reacts to it, but not how its suppose to. Currently only the center few vertices seem to react on my sphere collider. Anyone any idea where I went wrong? This is my current script:
for(int i = 0; i < vertices.Length;i++){
vertices[i] = OriginalPositions[i];
if(ManipulatingObject.bounds.Contains(OriginalPositions[i])){
vertices[i].x = -1;
}
mesh.vertices = vertices;
mesh.RecalculateNormals();
}
$$anonymous$$esh vertices are in local coordinates. Is the $$anonymous$$anipulatingObject.bounds also in local coordinates? Collider.bounds will be world coordinates.
Ah yes, this helped me a lot! Posted an answer based on your insight.
Answer by TurboHermit · Jan 14, 2014 at 05:30 PM
Apparently, vertices are in local space, so it's necessary to convert them to world space using transform.TransformPoint. Also, apparently my axes were off. Working script:
for(int i = 0; i < vertices.Length;i++){
vertex = OriginalPositions[i];
Vector3 temp = vertex;
temp = transform.TransformPoint(vertex);
if(ManipulatingObject.bounds.Contains(temp)){
//Debug.Log (temp);
vertex.z = -1;
}
vertices[i] = vertex;
mesh.vertices = vertices;
}