2016-10-31 2 views
0

Я создал колесо и добавил вращение теперь его вращается в направлении против часовой стрелки, как это может сделано для поворота в направлении по часовой стрелкекак сделать вращение в направлении по часовой стрелке

using UnityEngine; 
using System.Collections; 
using System.Collections.Generic; 

public class Rotate : 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 (5, 10); 
     itemNumber = Random.Range (0, prize.Count); 
     float maxAngle = 360 * randomTime + (itemNumber * anglePerItem); 

     StartCoroutine (SpinTheWheel (1 * randomTime, maxAngle)); 
    } 
} 

IEnumerator SpinTheWheel (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] as per requirement 
}  
} 

также теперь он начинает вращается и после времени закончить это внезапно останавливается, как это может быть сделано, как, он останавливается как снижается скорость

ответ

0

я думаю очень простое решение проблемы было бы заменить:

transform.eulerAngles = new Vector3 (0.0f, 0.0f, angle + startAngle); 

с:

transform.eulerAngles = new Vector3 (0.0f, 0.0f, -(angle + startAngle)); 
0

Заменить этот код:

transform.eulerAngles = new Vector3 (0.0f, 0.0f, angle + startAngle); 

по адресу:

transform.eulerAngles = new Vector3 (0.0f, 0.0f, startAngle - angle);