Jump to content
Unity Insider Forum

WheelJoint2D Werte via Code ändern


Jomnitech

Recommended Posts

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

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

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...