[Fix] All in one + add dice
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
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));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user