Unity | 유니티/Unity 개발 일지

[Unity] 애니메이션 도구 | DOTween 기능(2)

maintain_H 2023. 1. 19. 19:00
반응형

저번에는 DOTween의 기본 기능에 대해 다뤘었다.

 

[Unity] 애니메이션 도구 | DOTween 기능(1)

1. DOTween이란? - DOTween is a fast, efficient, fully type-safe object-oriented animation engine for Unity, optimized for C# users, free and open-source, with tons of advanced features DOTween 홈페이지에 나와있는 설명이다. 유니티에서 Tw

maintaining.tistory.com

 

이번에도 DOTween의 기능에 대해 포스팅하려고 한다.

 

 

[DOJump]

점프 효과를 적용하는 기능이다. 

귀찮게 일일이 코드를 짜지 않고 DOTween의 DOJump를 사용하면 된다.

 

DOJump( Vector3 to, float jumpPower, int numJumps, float duration, bool snapping)

 

"to"는 대상이 도달할 최종 값이다.

"jumpPower"은 점프력

"numJumps"는 점프 횟수

"snapping"은 기본값이 true이다. 생략 가능하다.

 

// EX)

    public GameObject cube;

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            cube.transform.DOJump(new Vector2(7, 0), 4f, 2, 5f);
        }
    }
}

실행결과

이게 움짤로 만들어지다보니 뚝뚝 끊기게 보이는데

실제로는 부드럽게 움직인다.

 

 

 

[DORotate]

회전하는 효과를 주는 기능이다.

 

DORotate( Vector to, float duration, RotateMode mode )

 

"RotateMode"는 회전 모드를 나타낸다. 4가지가 있다.

Fast : 기본 값, 360도이상 회전하지 않는다.

FastBeyond360 : 회전이 360도를 넘어간다.

WorldAxisAdd : 지정된 회전을 추가하는 모드이다.

LocalAxisAdd: 지저오딘 회전을 로컬 축에 추가한다고 한다.(예: Unity 편집기에서 활성화된 "로컬" 스위치로 개체를 회전하거나 transform.Rotate(Space.Self)를 사용하는 경우)

// Ex)

    public GameObject cube;

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            cube.transform.DORotate(new Vector3(90, 270, 0), 1f);
        }
    }

실행결과

실제로 적용해보면 부드럽게 회전하는 것을 볼 수 있다.

 

 

 

[DOLookAt]

설정한 위치를 바라보도록 회전하는 기능이다.

 

DOLookAt( Vector3 towards, float duration, AxisConstraint axisConstraint = AxisConstraint.None, Vector3 up = Vector3.up )

 

"AxisConstraint"는 회전에 대한 축 제약이라고 한다. 기본값은 None이고, 생략 가능하다.

"up"은 위쪽 방향을 정의하는 것이다. 기본값은 Vector3.up이고, 생략 가능하다.

// Ex)

    public GameObject cube;

    public GameObject vec;

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            cube.transform.DOLookAt(vec.transform.position, 1f);
        }
    }

 

실행결과

막상 코드를 짜고 실행했을 때 오잉? 싶었다.

보면 큐브가 사선으로 도는 것을 볼 수 있는데, Scene화면을 보고 이해했다.

 

DOLookAt 씬

예.. 3차원에서는 z값이.. 앞입니다..

2D게임을 만들고 있다보니 당연히 x값이 앞이라고 생각하고 있었다.

 

코드가 잘못된 게 아니라 내 머리가 잘못된 거였다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

역시 컴퓨터는 거짓말은 하지 않는다. (멍청해서 그렇지)

 

 

 

[DOScale]

크기를 지정된 값으로 변화시킬 수 있는 기능이다.

DOScale은 x, y, z 크기를 동일하게 지정된 값으로 키운다.

 

DOScale( float/Vector to, float duration )

 

// Ex)    
    public GameObject cube;

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            cube.transform.DOScale(5.5f, 1f);
        }
    }

실행결과

부담스럽게 커졌다. ㅎㅎ

 

 

 

 

- DOScaleX / DOScaleY / DOScaleZ

 

대상의 X, Y, Z값의 크기를 변화시키는 기능이다. 

 

// Ex)

    public GameObject cube;

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            cube.transform.DOScaleY(5f, 1f);
        }
    }

실행결과

Y값만 커진 것을 볼 수 있다.

 

 

[DOShakePosition]

흔들리는 효과를 낼 수 있는 기능이다.

 

DOShakePosition( float duration, float / Vector 3 strength, int vibrato, float randomness, bool fadeOut, ShakeRandomnessMod randomnessMode )

 

"strength"는 흔들리는 강도이다. float 대신 Vector를 사용하면 각 축의 강도를 정할 수 있다. 생략 가능

"vibrato" 얼마나 흔들릴지 정한다. 생략 가능

"randomness"는 흔들리는 방향을 정한다(0 ~ 180). 생략가능

90보다 큰 값은 보기 싫으니 주의하라고 홈페이지에 나와있다 ㅋㅋㅋㅋ

"fadeOut"은 기본값은 true이고, 자연스럽게 흔들림 효과가 사라진다. 생략 가능

"ShakeRandomnessMode"는 기본값은 full이며, 모드를 Harmonic으로 선택하면 균형있고 시작적으로 더 쾌적하다고 한다. 생략 가능

 

// Ex)

    public GameObject cube;

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            cube.transform.DOShakePosition(3.5f);
        }
    }

실행결과

움짤로 보니까 요란스럽지만..

실제로 적용시켜 보면 저정도는 아니다.

세부적인 부분은 본인 기호에 맞게 설정하면 자연스러운 진동효과를 낼 수 있다.

 

 

 

 

 

여기까지가 내가 생각하기에는 많이 사용하는 DOTween의 기본 기능이라고 생각한다.

다른 기능들은  [여기] 를 참고하면 된다.

 

 

다음엔 DOTween의 시퀀스에 대해 공부하고 포스팅 할 예정이다.

 

반응형