Jomnitech Geschrieben 25. Oktober 2020 Melden Share Geschrieben 25. Oktober 2020 Hallo Zusammen Ich möchte von der WheelJoint2D Komponente via Code Einstellungen ändern. Konkret geht es um Frequency und Damping Ratio. Laut der Unity-Anleitung müsste man es direkt mit .dampingRatio und .frequency ändern können. Die Variablen gibt es aber nicht und sind unter suspension untergeorded. Wenn ich dann z.B. suspension.frequency oder suspension.dampingRatio verwenden und ändern möchte, bekomme ich nur diese Fehlermeldung : Fehler CS1612 Der Rückgabewert von "WheelJoint2D.suspension" ist keine Variable und kann daher nicht geändert werden. Google konnte mir nicht weiterhelfen Kann mir jemand sagen wie ich das richtig anspreche damit ich die Werte ändern kann? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
KaBau Geschrieben 25. Oktober 2020 Melden Share Geschrieben 25. Oktober 2020 Nur eine Überlegung, da ich so eine Fehlermeldung vor Kurzem beim Ändern des Alpha Wert von Shadern hatte: muss eventuell der zu ändernde Wert in Klammern mit Ausrufezeichen gesetzt werden und mit get... und set... geändert werden? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 25. Oktober 2020 Melden Share Geschrieben 25. Oktober 2020 WheelJoint2D.suspension ist keine Variable, sondern eine Property. Die tun syntaktisch so, als wären sie Variablen, aber sind in Wirklichkeit... leicht anders. Genauere Erklärung gibt's auf Anfrage, sonst wird der Post eventuell etwas lang und verwirrend Der relevante Aspekt hier ist, dass man Member eines von einer Property zurückgegebenen Structs nicht direkt mit dem Punkt-Operator ändern kann. So als Beispiel, das vermutlich viele kennen: transform.position.x = 0f; // Geht nicht "position" ist hier auch eine Property, und man kann "x" nicht ändern, weil es ein Member des Vector3-Structs ist, das "position" als Typ hat. Man kann höchstens den ganzen Vector3 überschreiben: transform.position = Vector3.zero; Wenn man also nur ein Member ändern will, dann baut man sich entweder einen neuen Vector3 und übernimmt einige der alten Werte, oder man macht sich eine Kopie in eine lokale Variable: var position = transform.position; position.x = 0f; transform.position = position; Und genau das machst du mit suspension auch: var suspension = wheelJoint2D.suspension; suspension.frequency = foo; suspension.dampingRatio = bar; wheelJoint2D.suspension = suspension; Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jomnitech Geschrieben 25. Oktober 2020 Autor Melden Share Geschrieben 25. Oktober 2020 Vielen Dank für die super Erklärung, funktioniert 1A. Gleich viel angenehmer, wenn man alles über einen Regler einstellen kann, statt sich durch jede einzelne Komponente durchzuklicken. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.