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)); } } }