forellenforderung3/Assets/RPGTALK/Scripts/Snippets/RPGTalkSimpleAnimation.cs
2023-05-28 11:44:55 +02:00

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;
}
}
}