コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】DOTween の Rotate 系の拡張メソッドで X・Y・Z を個別指定できるようにする拡張メソッド

ソースコード

using DG.Tweening;
using DG.Tweening.Core;
using DG.Tweening.Plugins.Options;
using UnityEngine;

namespace Kogane
{
    public static class DOTweenRotateExtensionMethods
    {
        public static TweenerCore<Quaternion, Vector3, QuaternionOptions> DORotateX
        (
            this Transform self,
            float          endValue,
            float          duration,
            RotateMode     mode = RotateMode.Fast
        )
        {
            return self.DORotate
            (
                endValue: new Vector3( endValue, 0, 0 ),
                duration: duration,
                mode: mode
            );
        }

        public static TweenerCore<Quaternion, Vector3, QuaternionOptions> DORotateY
        (
            this Transform self,
            float          endValue,
            float          duration,
            RotateMode     mode = RotateMode.Fast
        )
        {
            return self.DORotate
            (
                endValue: new Vector3( 0, endValue, 0 ),
                duration: duration,
                mode: mode
            );
        }

        public static TweenerCore<Quaternion, Vector3, QuaternionOptions> DORotateZ
        (
            this Transform self,
            float          endValue,
            float          duration,
            RotateMode     mode = RotateMode.Fast
        )
        {
            return self.DORotate
            (
                endValue: new Vector3( 0, 0, endValue ),
                duration: duration,
                mode: mode
            );
        }

        public static TweenerCore<Quaternion, Vector3, QuaternionOptions> DOLocalRotateX
        (
            this Transform self,
            float          endValue,
            float          duration,
            RotateMode     mode = RotateMode.Fast
        )
        {
            return self.DOLocalRotate
            (
                endValue: new Vector3( endValue, 0, 0 ),
                duration: duration,
                mode: mode
            );
        }

        public static TweenerCore<Quaternion, Vector3, QuaternionOptions> DOLocalRotateY
        (
            this Transform self,
            float          endValue,
            float          duration,
            RotateMode     mode = RotateMode.Fast
        )
        {
            return self.DOLocalRotate
            (
                endValue: new Vector3( 0, endValue, 0 ),
                duration: duration,
                mode: mode
            );
        }

        public static TweenerCore<Quaternion, Vector3, QuaternionOptions> DOLocalRotateZ
        (
            this Transform self,
            float          endValue,
            float          duration,
            RotateMode     mode = RotateMode.Fast
        )
        {
            return self.DOLocalRotate
            (
                endValue: new Vector3( 0, 0, endValue ),
                duration: duration,
                mode: mode
            );
        }

        public static TweenerCore<Quaternion, Vector3, QuaternionOptions> DORotateX
        (
            this GameObject self,
            float           endValue,
            float           duration,
            RotateMode      mode = RotateMode.Fast
        )
        {
            return self.transform.DORotateX( endValue, duration, mode );
        }

        public static TweenerCore<Quaternion, Vector3, QuaternionOptions> DORotateY
        (
            this GameObject self,
            float           endValue,
            float           duration,
            RotateMode      mode = RotateMode.Fast
        )
        {
            return self.transform.DORotateY( endValue, duration, mode );
        }

        public static TweenerCore<Quaternion, Vector3, QuaternionOptions> DORotateZ
        (
            this GameObject self,
            float           endValue,
            float           duration,
            RotateMode      mode = RotateMode.Fast
        )
        {
            return self.transform.DORotateZ( endValue, duration, mode );
        }

        public static TweenerCore<Quaternion, Vector3, QuaternionOptions> DOLocalRotateX
        (
            this GameObject self,
            float           endValue,
            float           duration,
            RotateMode      mode = RotateMode.Fast
        )
        {
            return self.transform.DOLocalRotateX( endValue, duration, mode );
        }

        public static TweenerCore<Quaternion, Vector3, QuaternionOptions> DOLocalRotateY
        (
            this GameObject self,
            float           endValue,
            float           duration,
            RotateMode      mode = RotateMode.Fast
        )
        {
            return self.transform.DOLocalRotateY( endValue, duration, mode );
        }

        public static TweenerCore<Quaternion, Vector3, QuaternionOptions> DOLocalRotateZ
        (
            this GameObject self,
            float           endValue,
            float           duration,
            RotateMode      mode = RotateMode.Fast
        )
        {
            return self.transform.DOLocalRotateZ( endValue, duration, mode );
        }
    }
}