본문 바로가기
개발/Unity

Unity)애니메이션 커브 반전(Animation Curve Mirror)

by 테샤르 2023. 12. 28.

애니메이션 커브 반전(Animation Curve Mirror)

Animation Curve를 로 생성하는 코드이다.

해당 AnimationCurve를 실행하는걸 시간의 역순으로도 처리가 가능하지만 시각적으로 Curve도 확인이 되는 형태가 되면 좋을것 같았다.

 

 

AnimationCurve를 통해서 특정 수치값에 대한 처리를 하는데 활용하다가 이번에 미러링(반대)로 Animation Curver 기능이 필요해서 구현하게 되었다.

 

반응형

 

< 코드 >

using UnityEngine;

public static class AnimationCurveExtensions
{
    public static AnimationCurve Mirror(this AnimationCurve curve)
    {
        Keyframe[] keys = curve.keys;
        int keyCount = keys.Length;

        // 미러링된 키프레임 배열 생성
        Keyframe[] mirroredKeys = new Keyframe[keyCount];

        // 각 키프레임을 미러링
        for (int i = 0; i < keyCount; i++)
        {
            Keyframe originalKey = keys[i];

            // 시간 값 미러링
            float mirroredTime = (keys[keyCount - 1].time - originalKey.time);

            // 미러링된 키프레임 생성
            Keyframe mirroredKey = new Keyframe(mirroredTime, originalKey.value, -originalKey.inTangent, -originalKey.outTangent);

            // 미러링된 키프레임을 배열에 추가
            mirroredKeys[i] = mirroredKey;
        }

        // 새로운 AnimationCurve를 생성하고 미러링된 키프레임 배열을 할당
        AnimationCurve mirroredCurve = new AnimationCurve(mirroredKeys);

        return mirroredCurve;
    }
}

 

 

Unity Animation Curve 사용 : [링크]

 

애니메이션 커브 사용 - Unity 매뉴얼

Animation Clip 에서 모든 애니메이션화 프로퍼티에는 Animation Curve 가 있어서 Animation Clip에서 그 프로퍼티의 시간에 따른 변화를 조절할 수 있습니다. Animation View 의 프로퍼티 리스트 영역(왼쪽)에는

docs.unity3d.com

 

 

★☆☆☆☆

 

반응형

댓글