2016-06-21 3 views
-1

Bitte schauen Sie auf this Video.Unity3D: Wie man ein sammelbares Symbol und Text auf dem Bildschirm blinkt

Bei 45 Sekunden blinkt das COD Ghost-Symbol mit dem Text darunter. Ich möchte dasselbe für mein Spiel erreichen. Ich bin ein Anfänger und ich denke, Verlangsamung Video zeigt dies, dass es skaliert.So Transformation und einige Partikelsystem möglicherweise für Splash-Effekt angewendet wurden. Aber es gibt viele andere Reihenfolge der Animation im Video auf Symbol auftritt.

+0

Haben Sie noch etwas versuchen? Haben Sie einen Code, der nicht funktioniert? – Programmer

+0

@Programmierer Ich bin ein Anfänger, ich habe keine Ahnung, wie man das bewerkstelligt.Ich habe getan Spritzer Funken hinter Text dafür mit Particle-System, aber das ist nur eine Sache von dem, was ich will. –

+0

Keine gute Entschuldigung. Zumindest sollten Sie erwähnen, wo Sie ein Problem haben. Als Anfänger hier gehts http://unity3d.com/learn/tutorials/topics/scripting – Programmer

Antwort

1

All dies kann aus dem Skript erfolgen. Von diesem Video ansehen, das sind die Schritte zu folgen, um diesen Effekt zu replizieren:

.Image Erscheint (Bild Enable)

Machen Sie das Bild sehr groß es dann langsam nach unten skalieren.

.Wait für 0.3 Sekunden

.Text Erscheint (Enable Text)

Machen Sie den Text sehr groß dann langsam verringern. Sie können dies tun, indem Sie die Schriftart von einer großen Zahl in eine kleine Zahl ändern.

.Wait für 1 zweiten

.Blink Text 4 mal durch den Alphawert des Textes (Color.a) und zu 01 Makeln. Alpha 0 ist unsichtbar und 1 ist sichtbar. Warten Sie nach jedem Umschalten auf 0.1. Sie können dies in einer for Schleife tun.

.Text Disappears (Deaktivieren Text)

.Wait für 0.3 zweiten

.Image Scales unten verschwindet dann die Größe des Bildes erhalten, dann teilen sie in 2. Skalieren Sie im Laufe der Zeit auf diesen Wert.

Ändern Sie während der Skalierung das Alpha des Bildes von 1 auf 0. Dadurch wird allmählich unsichtbar.

Jetzt deaktivieren Sie das Bild. Das ist es.

Ich habe einen Code für dieses gemacht und Sie können es ändern, um Partikel nach Schritt # 3 hinzuzufügen.Im Folgenden finden Sie, was es aussieht:

einen UI Text, indem Sie auf Gameobject Erstellen ->UI ->Text:

den Code verwenden

enter image description here

.

Erstellen Sie die UI Bild, die auf dem Bildschirm, indem Sie auf Gameobject angezeigt wird ->UI ->Bild.

Setzen Sie den Text unter das Bild.

Ändern Sie die Texteinstellungen so, dass sie den eingekreisten Texteigenschaften in Rot aus dem folgenden Bild entsprechen. Wenn Sie die Komponenten und Image modifiziert haben, deaktivieren Sie sie, so dass sie vor dem Ausführen des Codes nicht sichtbar sind.

Hängen Sie das Skript an die Canvas an und ziehen Sie den Text dann in den textToAnimate-Slot im Skript. Ziehen Sie das Bild in den Slot imageToAnimate im Skript.

enter image description here

Nachfolgend finden Sie ein vollständiger Code, dies zu tun:

using UnityEngine; 
using System.Collections; 
using UnityEngine.UI; 

public class Test : MonoBehaviour 
{ 
    public Text textToAnimate; 
    public Image imageToAnimate; 

    // Use this for initialization 
    void Start() 
    { 
     StartCoroutine(CODGhostEffect(textToAnimate, imageToAnimate)); 
    } 

    private IEnumerator CODGhostEffect(Text text, Image image) 
    { 
     //Step 1 Enable Image 
     image.gameObject.SetActive(true); 

     Color defaultTextColor = text.color; 

     Color invisibleTextColor = text.color; 
     invisibleTextColor.a = 0; //Set Alpha to 0 

     //Image RectTransform 
     RectTransform imageRect = image.GetComponent<RectTransform>(); 
     Vector2 defaultImageSize = Vector2.zero; 
     defaultImageSize = imageRect.sizeDelta; 

     //Make the size of the Image to be 5x bigger then scale it back to be original size over time 
     Vector2 scaledImageSize = defaultImageSize * 5; 
     imageRect.sizeDelta = scaledImageSize; //Set the image size to be 5x 
     float imageAppearTime = 0.3f; 
     float counter = 0; 
     while (counter < imageAppearTime) 
     { 
      counter += Time.deltaTime; 
      float time = counter/imageAppearTime; 

      //Scale the image back to the original Size size OverTime 
      imageRect.sizeDelta = Vector2.Lerp(scaledImageSize, defaultImageSize, time); 
      yield return null; 
     } 

     //Step 2 Wait for 0.3 Seconds 
     yield return new WaitForSeconds(0.3f); 


     //Step 3 Enable Text 
     text.gameObject.SetActive(true); 

     //Make the font size of the Text to be 4x bigger then scale it back to be original size over time 
     int defaultTextSize = text.fontSize; 
     int scaledTextSize = defaultTextSize * 4; 
     text.fontSize = scaledTextSize; //Set the text font size to be 4x 

     float textAppearTime = 0.2f; 
     counter = 0; 
     while (counter < imageAppearTime) 
     { 
      counter += Time.deltaTime; 
      float time = counter/textAppearTime; 

      //Scale the text font size back to the original Size OverTime 
      text.fontSize = (int)Mathf.Lerp(scaledTextSize, defaultTextSize, time); 
      yield return null; 
     } 

     //Step 4 Wait for 1 Seconds 
     yield return new WaitForSeconds(1.0f); 

     float textBlinkTime = 0.1f; //Time between blinking Text 
     WaitForSeconds waitTime = new WaitForSeconds(textBlinkTime); 

     //Step 5 Blink Text 
     /////////////////////////Flash Text///////////////////////// 
     for (int i = 0; i < 4; i++) 
     { 
      //Hide Text by setting alpha to 0 
      text.color = invisibleTextColor; 

      yield return waitTime; //Wait 

      //Show Text by setting alpha to defaultvalue 
      text.color = defaultTextColor; 

      yield return waitTime; //again 
     } 

     //Step 6 Disable Text 
     text.gameObject.SetActive(false); 

     //Reset text color to default color 
     text.color = defaultTextColor; 

     /////////////////////////SLOWLY MAKE Image DISAPPEAR///////////////////////// 
     Color defaultImageColor = image.color; 
     Color invisibleImageColor = image.color; 
     invisibleImageColor.a = 0; //Set Alpha to 0 


     Vector2 halfImageSize = Vector2.zero; 
     halfImageSize = defaultImageSize/2; 

     //Step 7 Wait for 3 Seconds 
     yield return new WaitForSeconds(0.3f); 

     //Step 8 Animate Image disappearance 
     float imageDisappearTime = 0.2f; //How long to hide the UI Image (0.2 seconds) 
     counter = 0; 
     while (counter < imageDisappearTime) 
     { 
      counter += Time.deltaTime; 
      float time = counter/imageDisappearTime; 

      //Scale to half size OverTime 
      imageRect.sizeDelta = Vector2.Lerp(defaultImageSize, halfImageSize, time); 

      //Fade OverTime 
      image.color = Color.Lerp(defaultImageColor, invisibleImageColor, time); 
      yield return null; 
     } 

     //Disable Image 
     image.gameObject.SetActive(false); 

     //Reset image size to default size 
     imageRect.sizeDelta = defaultImageSize; 

     //Reset image color to default color 
     image.color = defaultImageColor; 
    } 
} 
+0

okeh, gib mir etwas Zeit, bevor ich es teste. –

+1

@Softoxide Denken Sie daran, wenn es nicht funktioniert, haben Sie etwas falsch gemacht, weil ich ein Bild davon funktionierte. Ich arbeite auf meiner Seite vollkommen in Ordnung. Hier ist eine UI-Tutorial, wenn Sie irgendwo stecken sind http://unity3d.com/learn/tutorials/topics/user-interface-ui – Programmer

+0

es funktioniert wie ein Charme, danke, ich werde weiterhin experimentieren und wird auch in Zukunft in Verbindung bleiben –

Verwandte Themen