증상
- 스크립트를 통해 애니메이션 커브 인터폴레이션을 설정하고 싶습니다
원인
스크립트로 애니메이션 커브를 설정하려고 할 경우 인터폴레이션이 끝나면 다음과 같은 결과를 받게 됩니다.
해결책
이 문제를 해결하려면 두 가지를 해야 합니다.
- 스크립트를 통해 애니메이션 커브 프로퍼티를 수동으로 설정한 뒤에AnimationClip.EnsureQuaternionContinuity 를 호출합니다.
- AssetDatabase.SaveAssets 로 에셋을 저장합니다.
다음 예시를 참조해 주십시오:
AnimationClip clip = new AnimationClip ();
//If using Unity 5
clip.legacy = true;
// Rotation
AnimationCurve CurveRot = new AnimationCurve ();
AnimationCurve CurveRotY = new AnimationCurve ();
AnimationCurve CurveRotZ = new AnimationCurve ();
AnimationCurve CurveRotW = new AnimationCurve ();
float time = 0.5f;
//stepValues [0,1,0,10]
Quaternion angle = Quaternion.Euler (0, 0, stepValues[i] * 180.0f);
CurveRot.AddKey (time, angle.x);
CurveRotY.AddKey (time, angle.y);
CurveRotZ.AddKey (time, angle.z);
CurveRotW.AddKey (time, angle.w);
clip.SetCurve ("", typeof(Transform),"localRotation.z", CurveRot);
clip.SetCurve ("",typeof(Transform),"localRotation.y", CurveRotY);
clip.SetCurve ("",typeof(Transform),"localRotation.z", CurveRotZ);
clip.SetCurve ("",typeof(Transform),"localRotation.w", CurveRotW);
//This ensures a smooth interpolation
clip.EnsureQuaternionContinuity ();
String newCName = "Comp1_L_1";
AssetDatabase.CreateAsset (clip,ANIM_CLIP_PATH+newCName+".anim");
AssetDatabase.SaveAssets ();
추가 정보
http://docs.unity3d.com/Manual/animeditor-AnimationCurves.html
본 문서는 Unity 버전 5.x 에 해당됩니다.