0
void OnMouseDown()
{
if (Input.GetMouseButtonDown(0))
{
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit, 1000.0f))
{
int[] triangles = transform.GetComponent<MeshFilter>().mesh.triangles;
if (hit.triangleIndex != -1 && (hit.triangleIndex * 3) < triangles.Length)
}
メッシュの三角形のうちの1つをクリックすると、ブレークポイントを使用して関数に到達する2つがありますが、hit.triangleIndexは-1です。私は6つの項目持つ配列の三角形でなぜOnMouseDown関数がhit.triangleIndexから-1を返しますか?
:見舞われたコライダーが MeshColliderある場合
index 0 = 2
index 1 = 1
index 2 = 0
index 3 = 2
index 4 = 3
index 5 = 1
右が、それは私が前に持っていた問題です。これまではBoxColliderを使っていました。そして私は今MeshColliderに変更しました:gameObject.AddComponent();問題は今、私がMeshColliderのプロパティ名を確認した場合にのみ、OnMouseDown関数に入ることがない、メッシュ上でマウスをクリックすると、Convexです。私がそれをtrueに設定することをチェックすると、OnMouseDownに到達します。しかし、ゲームをもう一度実行すると、私はConvexをfalseに設定する必要があります。 Convexプロパティをtrueまたはfalseに変更する必要があるたびに、OnMouseDownに到達しません。なぜどんなアイデア? –
@DanielHalfoniいくつかのグーグルが[this](http://answers.unity3d.com/answers/996290/view.html)の宝石を明らかにする。 – Iggy