Aides visuelles
épaisseur vs largeur: hereComment déterminer l'épaisseur par rapport à la largeur? (L'utilisation raycasting)
S'il vous plaît voir le court gif.
L'épaisseur est ici différente de la largeur car il y a plusieurs parois car il y a des cylindres extérieurs et intérieurs. L'épaisseur est la mesure de la distance entre la paroi extérieure/intérieure de n'importe quel côté du cylindre où, comme l'épaisseur est la distance d'une extrémité à l'autre englobant l'espace creux entre.
synopsis rapide sur les gifs fourni
-Sur chaque cliquez sur le point d'origine (bleu) et le point de destination (orange) orbes sont créés pour indiquer où l'utilisateur clique et le point final interprété utilisé pour calculer la distance (affiché sur l'interface graphique). L'origine définit où l'utilisateur clique sur la surface d'un collisionneur d'objets et la destination définit le point, perpendiculaire à l'axe Y du monde de l'origine, où un second rayon lancé vers le premier rayon, frappe de l'autre côté de le collisionneur.
actuel:
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
//obtain the vector where the ray hit the collider.
hitPoint = hit.point; //origin point
//offset the ray, keeping it along the XZ plane of the hit
Vector3 offsetDirection = -1 * hit.normal;
//offset a long way, minimum thickness of the object
ray.origin = hit.point + offsetDirection * 100;
//point the ray back at the first hit point
ray.direction = (hit.point - ray.origin).normalized;
//raycast all, because there might be other objects in the way
RaycastHit[] hits = Physics.RaycastAll(ray);
foreach (RaycastHit h in hits)
{
if (h.collider == hit.collider)
{
hitBack = h.point; //destination point
}
}
}
Actuellement, la largeur est la fonctionnalité en place. Je veux calculer l'épaisseur sans avoir à aller à l'intérieur d'un objet (comme vu dans le gif).
référence incroyable
http://answers.unity3d.com/questions/386698/detecting-how-many-times-a-raycast-collides-with-a.html
Ce type avait essentiellement la même question que moi et a une solution qui pourrait fonctionner. Je ne suis pas sûr comment Linecasting fonctionne contre Raycasting.
Laissez-nous [continuer cette discussion dans le chat] (http://chat.stackoverflow.com/rooms/151438/discussion-between-ryemoss-and-jtth). – ryeMoss