66 lines
1.4 KiB
C#
66 lines
1.4 KiB
C#
using UnityEngine;
|
|
|
|
namespace TMPro.Examples
|
|
{
|
|
public class ObjectSpin : MonoBehaviour
|
|
{
|
|
public enum MotionType
|
|
{
|
|
Rotation = 0,
|
|
BackAndForth = 1,
|
|
Translation = 2
|
|
}
|
|
|
|
public float SpinSpeed = 5f;
|
|
|
|
public int RotationRange = 15;
|
|
|
|
private Transform m_transform;
|
|
|
|
private float m_time;
|
|
|
|
private Vector3 m_prevPOS;
|
|
|
|
private Vector3 m_initial_Rotation;
|
|
|
|
private Vector3 m_initial_Position;
|
|
|
|
private Color32 m_lightColor;
|
|
|
|
private int frames;
|
|
|
|
public MotionType Motion;
|
|
|
|
private void Awake()
|
|
{
|
|
m_transform = base.transform;
|
|
m_initial_Rotation = m_transform.rotation.eulerAngles;
|
|
m_initial_Position = m_transform.position;
|
|
Light component = GetComponent<Light>();
|
|
m_lightColor = ((!(component != null)) ? Color.black : component.color);
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (Motion == MotionType.Rotation)
|
|
{
|
|
m_transform.Rotate(0f, SpinSpeed * Time.deltaTime, 0f);
|
|
return;
|
|
}
|
|
if (Motion == MotionType.BackAndForth)
|
|
{
|
|
m_time += SpinSpeed * Time.deltaTime;
|
|
m_transform.rotation = Quaternion.Euler(m_initial_Rotation.x, Mathf.Sin(m_time) * (float)RotationRange + m_initial_Rotation.y, m_initial_Rotation.z);
|
|
return;
|
|
}
|
|
m_time += SpinSpeed * Time.deltaTime;
|
|
float x = 15f * Mathf.Cos(m_time * 0.95f);
|
|
float z = 10f;
|
|
float y = 0f;
|
|
m_transform.position = m_initial_Position + new Vector3(x, y, z);
|
|
m_prevPOS = m_transform.position;
|
|
frames++;
|
|
}
|
|
}
|
|
}
|