如何在统一旋转的同时提高旋转轮的速度

时间:2017-01-03 06:18:26

标签: c# unity3d unity5

  • 我有一个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;
    
    
    }  
    

我怎么能这样做,因为我使用随机我没有得到任何想法

  • 是否可以在旋转轮旋转时添加速度 在第10师结束。

1 个答案:

答案 0 :(得分:1)

您只需使用Random初始化轮子的initial speeddeceleration即可。然后你的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);
    }
}