Hello,
I have a UI Text object. I affect it in several ways:
-
I move it down with mechanim affecting its pivot
-
I scale is up and down several times using mechanim affecting it’s scale
-
I shake it (move it inside unitSphere on y/x axis) with the below script
void Update () { ShakeStandBy (); } void ShakeStandBy() { if(shakeIntensity > 0) { transform.position = originalPosition + Random.insideUnitSphere * shakeIntensity; shakeIntensity -= shakeDecay; } else { transform.position = originalPosition; } }
“1.”, “2.” and “3.” all work fine on their own.
Here’s the problem:
In “2.” I also need to affect the anchoredPosition because by that time the text is moved with “1.” and its pivot is modified, so to counter that I also affect anchoredPosition in my scaling animation which gives the desired effect - the text is scaled from its CENTER and remains in the desired location. If I were to counter this effect by affecting pivot instead, the scaling would not happen from the center but from the top (since I moved the Text DOWN).
As soon as I use anchoredPosition in my animation, the shake stops working on the y axis as if it’s locked and only works on x axis. I don’t even have to run that animation, it’s sufficient to have a state in the animator with this animation (that affects anchoredPosition somehow) plugged in, and the shake won’t work. If you unplug it, it’s works normally again.
I tried rewriting the shake function with GetComponent().anchoredPosition but I get the same result.
I spent the entire day trying various workarounds and nothing solves this issue.
Does anyone know why do I get such behaviour?
Thanks in advance.