我有一个10格的旋转轮。
旋转从按钮点击的随机位置开始。一世 不想在第10师停止旋转轮。
void Start()
{
Panel = GameObject.FindGameObjectWithTag("Panel1");
Panel.SetActive (false);
maxAngle = Random.Range (1440.0f, 3600.0f);
//print("maxAngle"+maxAngle);
spinning = false;
anglePerItem = 360/prize.Count;
myStartAngle = (maxAngle % 360)*2;
//print("myStartAngle"+myStartAngle);
transform.eulerAngles = new Vector3 (0.0f, 0.0f, myStartAngle);
}
public void Onclick()
{
if ( !spinning) {
randomTime = Random.Range (20, 25);
itemNumber = Random.Range (1, prize.Count);
//float maxAngle = 360 * randomTime + (itemNumber * anglePerItem);
// float maxAngle = 360;
StartCoroutine (SpinTheWheel (1 * randomTime, maxAngle));
}
}
IEnumerator SpinTheWheel (float time, float maxAngle)
{
spinning = true;
SpinsEligibleFrSpinner = PlayerPrefs.GetInt ("SpinsEligibleFrSpinner");
SpinsEligibleFrSpinner = SpinsEligibleFrSpinner - 1;
PlayerPrefs.SetInt ("SpinsEligibleFrSpinner",SpinsEligibleFrSpinner);
float timer = 0.0f;
float startAngle =myStartAngle;
int animationCurveNumber = 0;
int i=0;
while (timer < time) {
//to calculate rotation
timer += Time.deltaTime;
angle = maxAngle * animationCurves [animationCurveNumber].Evaluate (timer / time) ;
if(i==0)
{
//print ("angle---"+angle);
}
i = i + 1;
transform.eulerAngles = new Vector3 (0.0f, 0.0f, angle);
yield return 0;
}
spinning = false;
}
我怎么能这样做,因为我使用随机我没有得到任何想法
答案 0 :(得分:1)
您只需使用Random
初始化轮子的initial speed
和deceleration
即可。然后你的Update()
方法只是在给定车轮速度值变化的情况下旋转车轮。
float _speed; //in m/s
float _deceleration; //in m/s^2
bool _spin;
void Update()
{
if (_spin)
{
transform.Rotate(_speed * Vector3.up * Time.deltaTime, Space.Self);
_speed -= _deceleration * Time.deltaTime;
//Stop when too slow.
if (_speed < minSpeed)
{
if ( //wheel is at 10th position )
_speed += minSpeed; //Push it a little more. You can use random here too.
else
_spin = false;
}
}
}
void OnClick()
{
if (!_spin)
{
_spin = true;
_speed = Random.Range(speedFloor, speedCeiling);
_deceleration = Random.Range(decFloor, decCeiling);
}
}