- Home /
Question by
DevonHansen · Sep 05, 2014 at 02:07 PM ·
c#animationgui
Created Animations only play half within Animator
I have created an animation within script (C#) that overrides an already Unity generated one. The issue I am hitting is that that the Animator seems to think that the animation itself is only 1 second long... But the animation is actually 2 seconds.
Below is the code I have created
void Awake()
{
_items = this.gameObject.GetComponentsInChildren<Widget>().ToList<Widget>();
// Clear all data in all the clips. These will be generated via code
foreach (AnimationClip clip in _animation)
{
SetAnimationData(clip);
clip.EnsureQuaternionContinuity();
}
_animator.Rebind();
}
private void SetAnimationData(AnimationClip clip)
{
clip.ClearCurves();
if (clip.name == "Stage1")
{
StageOneAnimations(clip);
}
else if (clip.name == "Stage2")
{
StageTwoAnimations(clip);
}
else if (clip.name == "Stage3")
{
StageThreeAnimations(clip);
}
}
private void StageOneAnimations(AnimationClip clip)
{
// Canvas Group Alpha
clip.SetCurve("", typeof(CanvasGroup), "m_Alpha",
AnimationCurve.Linear(0, 0, _timeBetweenSteps, 1));
// Block Raycasts
clip.SetCurve("", typeof(CanvasGroup), "m_BlocksRaycasts",
AnimationCurve.Linear(0, 0, _timeBetweenSteps, 1));
// Interactable
clip.SetCurve("", typeof(CanvasGroup), "m_Interactable",
AnimationCurve.Linear(0, 0, _timeBetweenSteps, 1));
for (int i = 0; i < _items.Count; ++i)
{
RectTransform rect = _items[i].GetComponent<RectTransform>();
clip.SetCurve(_items[i].name, typeof(RectTransform), "m_AnchoredPosition.y",
AnimationCurve.Linear(_timeBetweenSteps, rect.anchoredPosition.y, _timeBetweenSteps*2, rect.anchoredPosition.y + (_movementScale*i)));
}
}
Is there anything you think I may be missing?
Note: This is using the 4.6 Beta; not sure if is a bug of this or it could be an issue with my code.
Comment