Hallo :) Ich bin mit der Physics2D.Raycast Methode und nach Unity Dokumentation ihrer Eingabeargumente sind wie folgt definiert:Fehler Physics2D.Raycast mit - optional Argumenten
public static RaycastHit2D Raycast(Vector2 origin, Vector2 direction, float distance = Mathf.Infinity,
int layerMask = DefaultRaycastLayers, float minDepth = -Mathf.Infinity, float maxDepth = Mathf.Infinity);
Und ich diese Methode aufgerufen und eingefügt die folgenden Eingabeargumente:
RaycastHit2D hit = Physics2D.Raycast (transform.position,
newVelocity, layerMask: hitLayerMask);
Allerdings bekomme ich folgende Fehlermeldung:
The best overloaded method match for 'UnityEngine.Physics2D.Raycast(UnityEngine.Vector2, UnityEngine.Vector2, float)'
does not contain a parameter named layerMask
Können Sie mir helfen, dieses Problem zu lösen? Ich verstehe nicht, warum der Compiler denkt, ich überbelaste eine Methode mit nur drei Eingabeargumenten.
P.S: Ich bin mir meiner Einführung von "transform.position", einem Vector3-Objekt, in einer Funktion bewusst, die ein Vector2-Objekt annehmen soll. Aber ich habe das schon vorher gemacht und ich habe keine Fehler. Der einzige neue Ansatz, den ich nehme, ist die Spezifikation des Arguments layerMask:/
Ich wäre dankbar für jede Hilfe.
Edit: Um zu verdeutlichen, ist transform.position ein Vector3-Objekt, newVelocity ist ein Vector2 und hitLayerMask ist eine ganze Zahl.
Edit 2: Beachten Sie, dass ich die Übergabe des Arguments "distance" vernachlässigt habe, weil es einen Standardwert Mathf.Infinity hat. Auf dieser Webseite über optionale Argumente (https://msdn.microsoft.com/en-us/library/dd264739.aspx), auf dem ExampleMethod() - Teil, wird gezeigt, wie Argumente mit Standardwerten vernachlässigt werden können. Und das ist der Grund, warum ich das "Distanz" -Argument vernachlässigt habe
Oh okay. Ich dachte, man könnte die Argumente vernachlässigen, die einen Standardwert hatten. Aber ich habe keine Distanz zu spezifizieren ...: s Sollte ich Mathf.Infinity verwenden, wie es der Standardwert ist? – Dayman75
Auch diese Webseite über optionale Argumente https://msdn.microsoft.com/en-us/library/dd264739.aspx erklärt, wie Sie angeblich Argumente ignorieren können, die einen Standardwert haben, wie das Argument distance input in der Raycast-Funktion (Check ExampleMethod() auf dieser Seite). Also keine Passierdistanz sollte funktionieren:/ – Dayman75
@ Dayman75 Du hast diese Seite falsch gelesen. Sie können optionale Argumente von rechts nach links ignorieren, nicht jedoch von links nach rechts. Sie können also ** layerMask ** vernachlässigen, aber dann ** distance ** verwenden. Sie können ** distance ** nicht vernachlässigen und ** layerMask ** verwenden. Für die Distanz kannst du jetzt ** Mathf.Infinity ** verwenden, bis du deine eigene Distanz gefunden hast. Das ist bei jedem Spiel anders. – Programmer