Raycasting zu finden Mausklick auf ein Objekt in unity-2d-Spiele
Ich versuche zu löschen, das Objekt, auf dem die Maus geklickt wird. Ich mache ein 2D Spiel mit der neuen Unity3D 4.3. Hier ist der code, den ich verwende
void Update () {
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray,out hit))
{
isHit = false;
Destroy(GameObject.Find(hit.collider.gameObject.name));
}
}
}
Ist die Steuerung nicht in der inneren if-Schleife. (isHit
ist nicht als false festgelegt).
Hat das Objekt einen collider? Gibt es einen Beschleuniger und einen Festkörper?
Ja, es enthält einen Beschleuniger und einen Festkörper
Ich verwendet Physics2D und es funktioniert!! Dies ist der geänderte code Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); Vector2 orgin = new Vector2(ray.Herkunft.x-ray.Herkunft.y); RaycastHit2D Treffer = Physics2D.Linecast(orgin,-Vector2.bis,1 << LayerMask.NameToLayer("Unterstützt")); Destroy(hit).collider.gameObject); Aber jetzt, auch wenn ich auf anderen Orten ist das Objekt gelöscht wird.. ich denke, das problem ist mit dem raycast Richtung -Vector2.bis.. in Welche Richtung soll ich es umwandeln ??
nicht wirklich ein Teil von dem, was Sie gefragt, aber in dieser Zeile:
Ich kann nicht mit, der Zustand aufgrund eines Fehlers. Er sagte: "cannot convert from 'UnityEngine.Ray UnityEngine.vector2'." Gleiche wie Ray-ray.
Ja, es enthält einen Beschleuniger und einen Festkörper
Ich verwendet Physics2D und es funktioniert!! Dies ist der geänderte code Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); Vector2 orgin = new Vector2(ray.Herkunft.x-ray.Herkunft.y); RaycastHit2D Treffer = Physics2D.Linecast(orgin,-Vector2.bis,1 << LayerMask.NameToLayer("Unterstützt")); Destroy(hit).collider.gameObject); Aber jetzt, auch wenn ich auf anderen Orten ist das Objekt gelöscht wird.. ich denke, das problem ist mit dem raycast Richtung -Vector2.bis.. in Welche Richtung soll ich es umwandeln ??
nicht wirklich ein Teil von dem, was Sie gefragt, aber in dieser Zeile:
Destroy(GameObject.Find(hit.collider.gameObject.name));
finden, ist nicht erforderlich. Einfach tun Destroy(hit.collider.gameObject);
sollte gut funktionieren.Ich kann nicht mit, der Zustand aufgrund eines Fehlers. Er sagte: "cannot convert from 'UnityEngine.Ray UnityEngine.vector2'." Gleiche wie Ray-ray.
InformationsquelleAutor Bimal Bose B S | 2013-12-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden können Sie 3D-Physik-Funktionen auf das neue 2D-Sachen. Verwenden Sie die 2D-Funktionen statt. Beispiel:
InformationsquelleAutor Esa
Diese Frage ist ein bisschen alt, aber ich suchte nach einem Weg, um ein GameObject mit einem Mausklick in unity 2D, und die Antwort von der Esa fast hat mir geholfen, aber ich konnte nicht leisten, zu machen es zu arbeiten, so dass mit ein wenig Forschung, ich sah die Kamera.main.ScreenToWorldPoint wurde wieder das Zentrum des Bildbereichs der Kamera und es funktioniert richtig. es erforderlich, dass Sie den Unterschied in der Z-position der Kamera und die nächstgelegene GameObject. Meine Kamera war standardmäßig -10 und mein GameObject war in 0, so dass alle ich tun musste, ist mein Input.mousePosition.z um 10. Also, wenn Sie sind das erste problem, mit zu arbeiten Esa-code (wie ich 🙁 )den code Balg kann Ihnen helfen:
InformationsquelleAutor Wylht Heartless
Zuerst befestigen Sie jede Art von 2D-collider zu Ihrem GameObject, dann wähle eine dieser Lösungen;
1. Fall - Wenn es mehr als 1 GameObject auf der jeweils anderen, und Sie versuchen zu verstehen, bestimmte GameObject geklickt wird:
2. Fall - Wenn es nur 1 GameObject, und versuchen Sie zu verstehen, wenn es angeklickt wird:
InformationsquelleAutor Ahmet Hayrullahoglu
Haben Sie zu befestigen, ein mesh-collider(alle collider) mit Ihrem Objekt zuerst, um Sie im inneren Wenn. Dann,
einfach den job tun.
Gibt es vielleicht eine andere Arbeit, die hier in der Nähe.
InformationsquelleAutor Reaz Murshed