2016-05-09 10 views
2

Lassen Sie sich sagen, dass ich zwei Animationsclip habe, Leerlauf und Aktion; und zwei Spritesheet, ein Junge und ein Zeichen. Ich möchte Boy und Zeichen Sprite animiert aus dem gleichen Animationsclip, weil ich bereits separate Sprite dafür gemacht habe. Dies ist spritesheetMehrere Sprite in einem Animationsclip

sign spritesheet

unterzeichnen Und das ist Junge

spritesheet

boy

ich mein Animationsclip animierten Sprite will besteht aus zwei ähnlichen

enter image description here

I don Ich möchte zwei Animator (für Jungen und Zeichen) machen Mein Animator ist so kompliziert und macht zwei wirklich lange Zeit. Dank

ps. leider Englisch ist nicht meine Muttersprache :)

+0

ich einfachste Lösung erraten würde Zusammenführen von zwei Sprites verwenden und dann verwenden Ein Animator dafür. Es würde Ihre Bemühungen für die Arbeit mit zwei Animatoren sparen. Hoffe, dass hilft :) –

+0

wie zwei Sprites aus verschiedenen Spritesheet zusammenführen? – Eeva

+0

Verwenden Sie einige Bildbearbeitungstools wie Photoshop –

Antwort

1

Also ich bereits herausgefunden. Alles, was ich tun müssen, ist lateupdate Funktion und bilden das „Zeichen“ Objekt folgen Sie den „Jungen“ -Objekt, dann machen einfache Animation in „Zeichen“ Objekt

public Transform target; 
public Transform sign; 
public float xOffset; 
public float zSignOffset; 

void LateUpdate(){ 
    sign.transform.localPosition = new Vector3 (target.localPosition.x+ xOffset, transform.localPosition.y, target.localPosition.z+ zSignOffset); 
} 
0

Wenn das die Art und Weise Sie es tun wollen, dann ist der einfachste Weg, es zu erreichen, einen Bildeditor wäre mit wie Photoshop oder GIMP. Sie können den Jungen ausschneiden und einfügen und sich in einem neuen freigegebenen Bild mit einem transparenten Hintergrund anmelden. Es gibt eine Menge Tutorials, die leicht zu finden sind. Da es nicht in den Bereich der Codierung fällt, werde ich nicht weiter darauf eingehen, aber Sie sollten keine Schwierigkeiten haben, es zu tun, um sicherzustellen, dass alles perfekt ausgerichtet ist.

3

Sie eine Animation durch einfaches Ziehen einer Reihe von Bildern in die „Hierarchie“ Fenster erstellen, wie: boyChips0001.png boyChips0002.png boyChips0003.png

Selecting animation pictures

Wenn Sie das tun, Unity automatisch Erstelle ein neues GameObject mit einem "Animator Controller" und einer "Animation".

The animation created

Sie die Gameobject und die Animator-Controller löschen können, wenn Sie wollen, was zählt, ist die Animation, mit der Erweiterung „.anim“.

The animation file

Sie können beliebig viele Dateien erstellen „.anim“, wie Sie in der gleichen benötigen way.when Sie alles was Sie brauchen haben, ist es Zeit, Ihr Objekt zu verknüpfen. Fügen Sie dazu einen neuen "Animator" hinzu, indem Sie im Inspektor auf die Schaltfläche "Komponente hinzufügen" klicken und "Animator" eingeben.

Erstellen Sie dann auf die Schaltfläche „Erstellen“ einen Klick auf das „Projekt“ Fenster und wählen Sie „Animator Controller“

Nun asign den Animator Controller an den Animator einen Controller Animator.

Drag the Animator Controller to the Animator

Öffnen Sie das Animator Fenster Auswahl ziehen Sie das Menü „Fenster/Animator“ mit dem Animator Controller ausgewählt oder durch einen Doppelklick auf seiner Animator Controler

Schließlich und lassen Sie Ihre Animationen zu diesem Animator Fenster erstellt

An Animator Controller with 3 animations: "repose", "Globe1 animation" and "Globe2 Animation"

Jetzt sind Ihre Animationen bereit, die von einem Skript verwendet werden. Zum Beispiel kann der nächsten Codezyklus zwischen den Animationen, wenn der Benutzer trifft die Leertaste:

public class TransitionScript : MonoBehaviour { 

    public GameObject Globe; 
    string[] AnimationName; 
    private int currentAnimation; 
    KeyCode key; 
    // Use this for initialization 
    void Start() { 
     currentAnimation = 0; 

     AnimationName = new string[3]; 
     AnimationName[0] = "Repose"; 
     AnimationName[1] = "Globe1 Animation"; 
     AnimationName[2] = "Glove2 Animation"; 
    } 

    // Update is called once per frame 
    void Update() 
    { 
     if(Input.GetKeyDown(KeyCode.Space)) 
     { 
      print("space Down"); 
      Animator anim = Globe.GetComponent<Animator>(); 

      currentAnimation++; 
      if (currentAnimation >= AnimationName.Length) currentAnimation = 0; 
      anim.Play(AnimationName[currentAnimation]); 

     } 
    } 
} 

Hinweis: Die animierte Gameobject eine Sprite-Renderer-Komponente haben muss. Wenn nicht, können Sie die Animation nicht sehen:

Sprite Renderer