Sie sind nicht kümmern gedreht Portale nehmen, das ist, warum es funktioniert nicht ist.
jeweils Portale Unter der Annahme transform.right aus dem Portal zeigt, ist Vector.forward senkrecht zur 2D-Ebene und der Ball von portal1 geht zu portal2, könnten Sie so etwas wie folgt aus:
1. Berechnen des Vektor Vector3 v = ballhitPoint - portal1.transform.position
2. Bestimmen Sie die gerichtete Rotation zwischen portal1 und portal2: float r = (Mathf.Atan2(portal2.forward.y, portal2.forward.x) - Mathf.Atan2(portal1.forward.y, portal1.forward.x)) * 180/Mathf.PI
3. Drehen v um den gleichen Betrag vNew = Quaternion.AngleAxis(r, Vector3.forward)
4. Stellen Sie die Kugelposition redball.transform.position = portal2.transform.position + vNew
Zusammengefasst, was Sie erreichen wollen (wenn ich yo verstanden Ihr Problem ist richtig): Sie haben einen Hitpoint in einem Portal und möchten diesen Hitpoint auf ein Zielportal projizieren.
Ich habe diesen Code nicht getestet und weiß auch nicht, wie genau Sie 3D-Vektoren in Ihrem 2D-Spiel verwenden. Daher müssen Sie möglicherweise einige Berechnungen an Ihre Achse anpassen. Für weitere Informationen über die Funktionen, die ich verwendet habe, möchte ich die Unity-Dokumentation beziehen.
Klingt Spaß. Hast du eine Frage? – JJJ
hallo danke, Ja ich möchte den Ball richtig positionieren, wenn er aus einem anderen Portal kommt. – SmartPro123
niemand hält Sie davon ab;) Was haben Sie bisher versucht und was läuft falsch mit Ihrem Ansatz? – TheDjentleman