2017-01-03 1 views
-1
  • 저는 10 분할의 스핀 휠을 가지고 있습니다.회전하는 동안 회전하는 바퀴의 속도를 증가시키는 방법

  • 버튼을 클릭 할 때 임의의 위치에서 회전이 시작됩니다. i 제 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

당신은 initial speed와 휠의 deceleration를 초기화 Random를 사용할 수 있습니다. 그런 다음 휠의 속도 값이 변하면 휠을 돌립니다.

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

soo 제 10 부문에서 끝나지 않습니까? @ Lincoln –

+0

예, 편집되었습니다. didnt는 당신이 그것을 제 10 사단에서 멈추기를 원하지 않는다는 것을 깨닫습니다. – Lincoln