Browse Source

Allow run-time switching between lerped animations and keyframe-only animation, and made the playback speed configurable

console
Nico de Poel 5 years ago
parent
commit
e8e04b666d
  1. 26
      Assets/Scripts/Modules/AliasModelAnimator.cs

26
Assets/Scripts/Modules/AliasModelAnimator.cs

@ -4,15 +4,22 @@ using UnityEngine;
public class AliasModelAnimator : MonoBehaviour
{
public AliasModel aliasModel;
[SerializeField]
private bool lerpMove = true;
[SerializeField]
[Range(1, 20)]
private float animateFps = 5f;
//private int frameNumber = 0;
private float frameNumber = 0;
IEnumerator Start()
{
var meshRenderer = GetComponent<SkinnedMeshRenderer>();
if (!meshRenderer)
if (!meshRenderer || meshRenderer.sharedMesh == null || meshRenderer.sharedMesh.blendShapeCount == 0)
{
Debug.LogWarning($"Unexpected AliasModelAnimator on non-animated object '{name}'");
Destroy(this);
yield break;
}
@ -25,11 +32,16 @@ public class AliasModelAnimator : MonoBehaviour
meshRenderer.sharedMesh = mesh;
meshRenderer.SetBlendShapeWeight(0, blendWeight);
//yield return new WaitForSeconds(0.1f); // Animate at 10 fps
yield return null;
//frameNumber = (frameNumber + 1) % numFrames;
frameNumber = (frameNumber + Time.deltaTime * 5) % numFrames;
if (lerpMove)
{
yield return null;
frameNumber = (frameNumber + Time.deltaTime * animateFps) % numFrames;
}
else
{
yield return new WaitForSeconds(1.0f / animateFps);
frameNumber = (frameNumber + 1) % numFrames;
}
}
}
}
Loading…
Cancel
Save