2016-03-22 18 views
-1

Ich mache einen 2D Platformer und ich bin auf ein wirklich nerviges Problem gestoßen, wo, wenn ich meinen Spielercharakter GameObject an einen anderen Ort in der Szene verschiebe, mein Spieler festsitzt und das Spiel ausbricht , springt von der ursprünglichen Position des Spielers und der Position, zu der ich ihn bewegt habe.Unity2D - Spieler relative Animation Positionierung

Mein Spielercharakter besteht aus vielen Teilen, jedes ein separates GameObject. Ich weiß, dass das Problem definitiv in meiner Animation liegt, denn wenn ich die Animator-Komponente deaktiviere, verschwindet das Problem, nur habe ich meine Animationen nicht mehr. Ich glaube, dass das Problem in der Leerlaufanimation des Spielercharakters und seiner Positionseigenschaft liegt. Es ist kein Skript beigefügt, in dem sein Startort fest codiert ist.

Wie kann ich die untergeordneten Gameobjects relativ zum übergeordneten Player GameObject verschieben? Ich kann den Player in der Szene nicht von seinem ursprünglichen Standort aus verschieben, ohne dass das Spiel gestört wird.

Hier sind einige Screenshots
[Player und es ist Teile in Hierarchy] http://i67.tinypic.com/bdlc1j.png
[Idle Animation] http://i64.tinypic.com/2gtp99x.png
http://i66.tinypic.com/261jb6c.png
[Player Fehler aus bewegt wird, Spiel [ursprüngliche Lage des Spielers, er, wenn Start hier funktioniert] ] http://i67.tinypic.com/292a2c3.png

+0

Das ist seltsam. Irgendwie versucht die Animation, den "Käfer: Position" zu animieren, indem Sie "Brust: Position", "Torso: Position" und "Schale: Position" aus der Animation löschen und sehen, was passiert. –

+0

Nachdem ich genug mit der Animation herumgespielt habe, könnte das Problem irgendwo in meinem Animator und den playerObjects-Parametern liegen. Ich habe bemerkt, dass mein 'vSpeed' Float-Parameter 'rigidbody2D.velocity.y' ständig fällt und somit meinen Spielercharakter in der Mid-Air-Jump-Animation festhält, aber ich kann mich nicht bewegen, da er nicht 'geerdet' ist. – CodeLook12

Antwort

1

Versuchen Sie, "Apply Root Motion" -Flag in der Animator-Komponente zu deaktivieren. Das Problem sollte damit zusammenhängen, dass die Animation die Positionswerte verändert

+0

Yup. Das ist nicht aktiviert. Mein Spielercharakter kann sich tatsächlich schön und sanft bewegen, wobei die Körperteile zusammen bleiben und alles wie das Haupt-Elternobjekt gameObject sich nicht in der Animation bewegt, nur die Kinder. Nur es stört, wenn ich das Eltern-GameObject an eine andere Position in der Szene verschiebe. – CodeLook12

0

Ich schätze, dass Sie die verschiedenen Teile animiert haben, indem Sie sich dann im Editor bewegen und das aufzeichnen. Dies bedeutet, dass die Animation die ursprüngliche Position verfolgt, an der Sie die Animation ausgeführt haben. Versuchen Sie, diese Teile aus der Animation zu löschen.

+0

Ja, ich habe die verschiedenen Teile verschoben, aber das sollte keine Rolle spielen, da sie alle untergeordneten gameObjects sind, die sich innerhalb eines übergeordneten gameObject bewegen, das sich nicht mit Animation auf diesem Elternteil selbst bewegt, sondern nach Code. – CodeLook12

0

Ich konnte das Spazzy-Jittering-Problem nicht beheben, das auftritt, wenn ich den Spielercharakter an eine andere Position in der Szene bewege, aber ich habe einen Weg gefunden. Das Problem lag eindeutig in der Animator-Komponente und im Rigidbody2d des gameObject.

Anstatt den Spieler an eine andere Position zu bewegen, habe ich stattdessen einen "Spawn Point" erstellt, an dem der Spieler anfängt, wenn er zum ersten Mal die Szene spielt, und der frei herum bewegt werden konnte. Ziemlich viel:

Verwandte Themen