BITFALL/Assets/MagicaCloth2/Example (Can be deleted)/Common/Scripts/AutoRotate.cs

61 lines
1.4 KiB
C#

// Magica Cloth 2.
// Copyright (c) 2023 MagicaSoft.
// https://magicasoft.jp
using UnityEngine;
namespace MagicaCloth2
{
public class AutoRotate : MonoBehaviour
{
public Vector3 eulers = new Vector3(0, 90, 0);
public Space space = Space.World;
public enum UpdateMode
{
Update,
FixedUpdate,
}
[SerializeField]
private UpdateMode updateMode = UpdateMode.Update;
[SerializeField]
[Range(0.1f, 5.0f)]
private float interval = 2.0f;
public bool useSin = true;
private float time = 0;
private void FixedUpdate()
{
if (updateMode == UpdateMode.FixedUpdate)
UpdatePosition(Time.fixedDeltaTime);
}
void Update()
{
if (updateMode == UpdateMode.Update)
UpdatePosition(Time.deltaTime);
}
void UpdatePosition(float dtime)
{
if (useSin)
{
time += dtime;
float ang = (time % interval) / interval * Mathf.PI * 2.0f;
var t = Mathf.Sin(ang);
if (space == Space.World)
transform.eulerAngles = eulers * t;
else
transform.localEulerAngles = eulers * t;
}
else
{
transform.Rotate(eulers * dtime, space);
}
}
}
}