2017-03-06 2 views
0

Ich bevölkere 3d Marker auf meiner Karte. Nächstes Ziel ist es zu erkennen, auf welchen Marker geklickt wird. beigefügte UI-Taste mit jedem Marker, aber das ist kein guter Weg. kann jemand etwas besseres vorschlagen?Klicken Sie auf 3D Spielobjekt auf 3D Welt Einheit

+0

Während Raycast sollte funktionieren, Unity [Event] (https : //docs.unity3d.com/ScriptReference/EventSystems.EventSystem.html) sollte zum Erkennen von Klicks verwendet werden. Dadurch werden einige Probleme behoben, auf die Sie später in Ihrem Code stoßen werden. Überprüfe, wie man das auf der duplizierten Antwort macht, wo es steht * "** 5 **. Für 3D-Objekt (Mesh-Renderer/irgendein 3D-Collider)" * – Programmer

Antwort

1

Haben Ihre Marker einen Collider? Wenn dies der Fall ist, können Sie die Funktion OnMouseDown in einer Skriptkomponente verwenden, die an Ihr Spielobjekt angehängt ist, solange es eine Collider-Komponente hat.

Ansonsten können Sie dieses Snippet von http://answers.unity3d.com/questions/34795/how-to-perform-a-mouse-click-on-game-object.html

function Update() 
{ 
    if (Input.GetMouseButtonDown(0)) 
    { 
     var hit : RaycastHit; 
     var ray : Ray = Camera.main.ScreenPointToRay (Input.mousePosition); 

     if (Physics.Raycast (ray, hit, 100.0)) 
     { 
      // handle mouseclick 
     } 
    } 
} 
+0

Ja, ich habe einen Collider mit dem Spielobjekt. Auf die Maus hat die Arbeit gemacht .. danke .. :) –

1

Sie können einen Collider in Gameobject befestigen und erkennen mit Physic.RayCast:

https://docs.unity3d.com/ScriptReference/Physics.Raycast.html