68 lines
1.8 KiB
C#
68 lines
1.8 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.Events;
|
|
using RPGTALK.Texts;
|
|
|
|
namespace RPGTALK.Snippets
|
|
{
|
|
[AddComponentMenu("Seize Studios/RPGTalk/Snippets/Simple Animation")]
|
|
public class RPGTalkSimpleAnimation : MonoBehaviour
|
|
{
|
|
|
|
public int textSpeed = 30;
|
|
public UnityEvent OnAnimationEnd;
|
|
public bool startOnAwake = true;
|
|
|
|
TMP_Translator text;
|
|
string originalText;
|
|
bool animating;
|
|
float currentChar;
|
|
|
|
// Start is called before the first frame update
|
|
void Start()
|
|
{
|
|
text = new TMP_Translator(gameObject);
|
|
if (startOnAwake)
|
|
{
|
|
StartAnimating();
|
|
}
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
if (!animating)
|
|
{
|
|
return;
|
|
}
|
|
|
|
// if there's still text left to show
|
|
if (currentChar < originalText.Length)
|
|
{
|
|
|
|
//ensure that we don't accidentally blow past the end of the string
|
|
currentChar = Mathf.Min(currentChar + textSpeed * Time.deltaTime,
|
|
originalText.Length);
|
|
|
|
//Do what we have to do if the the text just ended
|
|
if (currentChar >= originalText.Length)
|
|
{
|
|
OnAnimationEnd.Invoke();
|
|
return;
|
|
}
|
|
|
|
//Get the current char and the text and put it into the U
|
|
text.ChangeTextTo(originalText.Substring(0, (int)currentChar));
|
|
|
|
|
|
}
|
|
}
|
|
|
|
public void StartAnimating()
|
|
{
|
|
originalText = text.GetCurrentText();
|
|
animating = true;
|
|
}
|
|
}
|
|
} |