You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.7 KiB
C#

2 months ago
using UnityEngine;
namespace AllIn1SpriteShader
{
public class DemoCircleExpositor : MonoBehaviour
{
[SerializeField] private float radius = 40f;
[SerializeField] private float rotateSpeed = 10f;
private float zOffset = 0f;
private Transform[] items;
private int count = 0;
private int currentTarget = 0;
private float offsetRotation, iniY;
private Quaternion dummyRotation;
void Start()
{
dummyRotation = transform.rotation;
iniY = transform.position.y;
items = new Transform[transform.childCount];
foreach (Transform child in transform)
{
items[count] = child;
count++;
}
offsetRotation = 360.0f / count;
for (int i = 0; i < count; i++)
{
float angle = i * Mathf.PI * 2f / count;
Vector3 newPos = new Vector3(Mathf.Sin(angle) * radius, iniY, -Mathf.Cos(angle) * radius);
items[i].position = newPos;
}
zOffset = radius - 40f;
transform.position = new Vector3(transform.position.x, transform.position.y, zOffset);
}
private void Update()
{
transform.rotation = Quaternion.Slerp(transform.rotation, dummyRotation, rotateSpeed * Time.deltaTime);
}
public void ChangeTarget(int offset)
{
currentTarget += offset;
if (currentTarget > items.Length - 1) currentTarget = 0;
else if (currentTarget < 0) currentTarget = items.Length - 1;
dummyRotation *= Quaternion.Euler(Vector3.up * (offset * offsetRotation));
}
}
}