public int triangleIndex;
Описание
Индекс треугольника, в который попали.
Индекс треугольника действителен только в том случае, если коллайдер, с которым произошло столкновение, является MeshCollider.
// Этот скрипт рисует отладочную линию вокруг треугольников сетки
// когда вы наводите на них указатель мыши.
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour
{
Camera cam;
void Start()
{
cam = GetComponent<Camera>();
}
void Update()
{
RaycastHit hit;
if (!Physics.Raycast(cam.ScreenPointToRay(Input.mousePosition), out hit))
return;
MeshCollider meshCollider = hit.collider as MeshCollider;
if (meshCollider == null || meshCollider.sharedMesh == null)
return;
Mesh mesh = meshCollider.sharedMesh;
Vector3[] vertices = mesh.vertices;
int[] triangles = mesh.triangles;
Vector3 p0 = vertices[triangles[hit.triangleIndex * 3 + 0]];
Vector3 p1 = vertices[triangles[hit.triangleIndex * 3 + 1]];
Vector3 p2 = vertices[triangles[hit.triangleIndex * 3 + 2]];
Transform hitTransform = hit.collider.transform;
p0 = hitTransform.TransformPoint(p0);
p1 = hitTransform.TransformPoint(p1);
p2 = hitTransform.TransformPoint(p2);
Debug.DrawLine(p0, p1);
Debug.DrawLine(p1, p2);
Debug.DrawLine(p2, p0);
}
}
Смотрите так же: Physics.Raycast, Physics.Linecast, Physics.RaycastAll.