-->





#if UNITY_EDITOR
[ContextMenu("DebugDoTeleport")]
private void DebugDoTeleport()
{
DoTeleport(8, 1.5f);
}
[ContextMenu("DebugUndoTeleport")]
private void DebugUndoTeleport()
{
UndoTeleport(8, 1.5f);
}
#endif
/// <summary>
/// テレポートを実行
/// </summary>
/// <param name="distance">テレポートの跳躍距離</param>
/// <param name="duration">テレポートにかかる時間</param>
public void DoTeleport(float distance, float duration)
{
SetBaseMaterialValue();
target.material.SetFloat("_Distance", distance);
target.material.SetFloat("_TeleportPow", 0);
DOTween.To(() => target.material.GetFloat("_TeleportPow"), (val) =>
{
target.material.SetFloat("_TeleportPow", val);
}, 1, duration).SetEase(Ease.InQuad);
}
/// <summary>
/// テレポートの逆再生
/// </summary>
/// <param name="distance">テレポートの跳躍距離</param>
/// <param name="duration">テレポートにかかる時間</param>
public void UndoTeleport(float distance, float duration)
{
SetBaseMaterialValue();
target.material.SetFloat("_Distance", distance);
target.material.SetFloat("_TeleportPow", 1);
DOTween.To(() => target.material.GetFloat("_TeleportPow"), (val) =>
{
target.material.SetFloat("_TeleportPow", val);
}, 0, duration).SetEase(Ease.OutQuad).OnComplete(() =>
{
target.material.SetFloat("_Distance", 1);
target.material.SetFloat("_PosY", 0);
});
}
/// <summary>
/// テレポートする際の画像の分割数を変更する。1~20の指定が可能
/// </summary>
public void SetSeliceCount(int sliceCount)
{
this.sliceCount = sliceCount;
}
Properties
{
//以下4つの変数は適切にImageの座標を調整するために必要
[HideInInspector]_CanvasScreenHeight("CanvasScreenHeight", float) = 1000
[HideInInspector]_PosY("PosY", float) = 0
[HideInInspector]_ScaleY("ScaleY", float) = 1
[HideInInspector]_ImageHeight("ImageHeight", float) = 100
[Space(10)]
[HideInInspector]_SliceCount("SliceCount", Range(1, 20)) = 4 //テレポートする際の画像の分割数
[HideInInspector]_Distance ("Distance", Range(1, 20)) = 1 //テレポートの移動距離
[HideInInspector]_TeleportPow ("TeleportPow", Range(0, 1)) = 0 //テレポートの進捗、1で完全にテレポート完了
[Space(10)]
[Toggle]
[HideInInspector]_UseMonoCol("UseMonoCol", float) = 1 //テレポートの途中で単一色に変化するかどうか
[HideInInspector]_MonoCol("MonoCol", Color) = (1.0, 1.0, 1.0, 1.0) //単一色の色
}
/// <summary>
/// テレポートする際の単一色の指定
/// </summary>
public void SetColor(Color color)
{
isUseMonoCol = true;
monoCol = color;
}
/// <summary>
/// テレポートする際に単一色に変化させない設定
/// </summary>
public void UnsetColor()
{
isUseMonoCol = false;
}






