NukoTweenはUdonで実装されたTweenアニメーションエンジンです。VRChatで使用する事を目的としています。
以下のパッケージが導入されている事が前提となります。
- Unity 2019.4.29f1
- VRChat SDK3 - World
- UdonSharp
- NukoTweenのリリースページから最新版のunitypackageをダウンロードします。
- VRCSDK3、UdonSharpが導入されているプロジェクトにダウンロードしたunitypackageをインポートします。
- Assets/NukoTweenディレクトリの中にあるNukoTweenEngineプレハブをヒエラルキーに配置します。
- ヒエラルキー上にTweenさせたいオブジェクトを作成します。
- 作成したオブジェクトにUdonBehaviorをアタッチし、以下のようなスクリプトを書きます。
using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using VRC.Udon;
public class TweenCube : UdonSharpBehaviour
{
public NukoTween.NukoTweenEngine tween;
public override void Interact()
{
tween.LocalMoveTo(gameObject, new Vector3(1f, 0.5f, 0f), 1f, 0f, tween.EaseInOutCubic, false);
}
}
- インスペクターのtween欄にヒエラルキー上のNukoTweenEngineをアタッチします。
- シーン再生後Trigger Interactボタンを押下し、アニメーションが再生される事を確認します。
全ての機能はNukoTweenEngine
クラスのインスタンスメソッドとして実装されています。
引数には以下の値を設定します。
target
操作する対象to
操作後の状態duration
操作にかける時間(秒)delay
操作の開始を遅らせる時間(秒)easeId
使用するイージング関数relative
現在の状態から相対的に変化させるかどうか
LocalMoveTo(GameObject target, Vector3 to, float duration, float delay, int easeId, bool relative)
ターゲットのLocalPositionを指定した位置に変更します。
MoveTo(GameObject target, Vector3 to, float duration, float delay, int easeId, bool relative)
ターゲットのPositionを指定した位置に変更します。
LocalScaleTo(GameObject target, Vector3 to, float duration, float delay, int easeId, bool relative)
ターゲットのLocalScaleを指定した大きさに変更します。
LocalRotateTo(GameObject target, Vector3 to, float duration, float delay, int easeId, bool relative)
ターゲットのLocalRotateを指定した角度に変更します。
角度はオイラー角で指定します。
LocalRotateQuaternionTo(GameObject target, Quaternion to, float duration, float delay, int easeId, bool relative)
ターゲットのLocalRotateを指定した角度に変更します。
角度はクォータニオンで指定します。
RotateTo(GameObject target, Vector3 to, float duration, float delay, int easeId, bool relative)
ターゲットのRotateを指定した角度に変更します。
角度はオイラー角で指定します。
RotateQuaternionTo(GameObject target, Quaternion to, float duration, float delay, int easeId, bool relative)
ターゲットのRotateを指定した角度に変更します。
角度はクォータニオンで指定します。
AnchorPosTo(GameObject target, Vector3 to, float duration, float delay, int easeId, bool relative)
ターゲットのAnchoredPositionを指定した位置に変更します。
GraphicColorTo(Graphic target, Color to, float duration, float delay, int easeId)
ターゲットのColorを指定した色に変更します。
GraphicFadeTo(Graphic target, float to, float duration, float delay, int easeId)
ターゲットのColorの透明度を指定した値に変更します。
FillAmountTo(Image target, float to, float duration, float delay, int easeId)
ターゲットのFillAmountを指定した値に変更します。
TextTo(Text target, string to, float duration, float delay, int easeId)
ターゲットのTextを操作し、文字送りアニメーションを行います。
TMPTextTo(TextMeshProUGUI target, string to, float duration, float delay, int easeId)
ターゲットのTextを操作し、文字送りアニメーションを行います。
AudioFadeTo(AudioSource target, float to, float duration, float delay, int easeId)
ターゲットのVolumeを指定した音量に変更します。
MaterialColorTo(Material target, string propertyName, Color to, float duration, float delay, int easeId)
マテリアルのColor型のプロパティを指定した色に変更します。
MaterialFadeTo(Material target, string propertyName, float to, float duration, float delay, int easeId)
マテリアルのColor型のプロパティの透明度を指定した値に変更します。
MaterialVectorTo(Material target, string propertyName, Vector4 to, float duration, float delay, int easeId)
マテリアルのVector型のプロパティを指定した値に変更します。
MaterialFloatTo(Material target, string propertyName, float to, float duration, float delay, int easeId)
マテリアルのFloat型のプロパティを指定した値に変更します。
MaterialTexOffsetTo(Material target, string propertyName, Vector2 to, float duration, float delay, int easeId)
マテリアルのテクスチャ型のプロパティのOffsetを指定した値に変更します。
MaterialTexTilingTo(Material target, string propertyName, Vector2 to, float duration, float delay, int easeId)
マテリアルのテクスチャ型のプロパティのTilingを指定した値に変更します。
DelayedSetActive(GameObject target, bool active, float delay)
指定した時間後にGameObjectのSetActiveを変更します。
DelayedCall(UdonSharpBehaviour target, string customEventName, float delay)
指定した時間後にSendCustomEventを実行します。
Complete(int tweenId)
動作中のtweenを即座に完了状態にします。
CompleteAll()
全ての動作中のtweenを完了状態にします。
Kill(int tweenId)
動作中のtweenを現在の状態で中止します。
KillAll()
全ての動作中のtweenを現在の状態で中止します。
登録したtweenがループするように設定します。
loopsにはループ回数を指定し、-1を渡すと無限ループになります。
LoopRestart(int tweenId, int loops)
ループする際、前回の始点に値を戻してからアニメーションが再実行されます。
LoopReverse(int tweenId, int loops)
ループする際、前回の終点を始点として、前回の始点へ戻るようなアニメーションを繰り返します。
LoopIncremental(int tweenId, int loops)
ループする際、前回の終点を始点として、前回と同じアニメーションを実行します。
以下のイージング関数を使用できます。
NukoTweenEngine
クラスの読み取り専用のインスタンス変数として定義されていますので、メソッド呼び出し時はこちらを使用してください。
- EaseLinear
- EaseInSine
- EaseOutSine
- EaseInOutSine
- EaseInQuad
- EaseOutQuad
- EaseInOutQuad
- EaseInCubic
- EaseOutCubic
- EaseInOutCubic
- EaseInQuart
- EaseOutQuart
- EaseInOutQuart
- EaseInQuint
- EaseOutQuint
- EaseInOutQuint
- EaseInExpo
- EaseOutExpo
- EaseInOutExpo
- EaseInCirc
- EaseOutCirc
- EaseInOutCirc
- EaseInBack
- EaseOutBack
- EaseInOutBack
- EaseInElastic
- EaseOutElastic
- EaseInOutElastic
- EaseInBounce
- EaseOutBounce
- EaseInOutBounce
エンジンの動作をカスタマイズします。
NukoTweenEngine
をアタッチしたオブジェクトのインスペクターから変更可能です。
tweenを同時に実行できる数を指定します。これには待機中のtweenも含まれます。
このプログラムにはMITライセンスが適用されます。
This software is released under the MIT License, see LICENSE.