Hello, I have made a wheel that spins but wheel prize value is always different even though it falls on same sector or is off by couple values. I want to assign specific numbers to each sector and I don’t know what is wrong. If the red sector falls the value is different every time. This is the wheel with 54 sectors assigned:
This is the code:
public class SpinBonusWheel : MonoBehaviour
{
public List<int> prize;
public List<AnimationCurve> animationCurves;
private bool spinning;
private float anglePerItem;
private int randomTime;
private int itemNumber;
void Start(){
spinning = false;
anglePerItem = 360/prize.Count;
}
void Update ()
{
if (Input.GetKeyDown (KeyCode.Space) && !spinning) {
randomTime = Random.Range (1, 4);
itemNumber = Random.Range (0, prize.Count);
float maxAngle = 360 * randomTime + (itemNumber * anglePerItem);
StartCoroutine (SpinTheBonusWheel (5 * randomTime, maxAngle));
}
}
IEnumerator SpinTheBonusWheel (float time, float maxAngle)
{
spinning = true;
float timer = 0.0f;
float startAngle = transform.eulerAngles.z;
maxAngle = maxAngle - startAngle;
int animationCurveNumber = Random.Range (0, animationCurves.Count);
Debug.Log ("Animation Curve No. : " + animationCurveNumber);
while (timer < time) {
//to calculate rotation
float angle = maxAngle * animationCurves [animationCurveNumber].Evaluate (timer / time) ;
transform.eulerAngles = new Vector3 (0.0f, 0.0f, angle + startAngle);
timer += Time.deltaTime;
yield return 0;
}
transform.eulerAngles = new Vector3 (0.0f, 0.0f, maxAngle + startAngle);
spinning = false;
Debug.Log ("Prize: " + prize [itemNumber]);//use prize[itemNumnber]
}
}