如何在统一旋转时提高纺车的速度
how to increase the speed of the spinning wheel while rotating in unity
我有一个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 师结束。
您可以只使用 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);
}
}
我有一个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 师结束。
您可以只使用 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);
}
}