using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Turn_Move : MonoBehaviour {
public int TurnX;
public int TurnY;
public int TurnZ;
public int MoveX;
public int MoveY;
public int MoveZ;
public bool World;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (World == true) {
transform.Rotate(TurnX * Time.deltaTime,TurnY * Time.deltaTime,TurnZ * Time.deltaTime, Space.World);
transform.Translate(MoveX * Time.deltaTime, MoveY * Time.deltaTime, MoveZ * Time.deltaTime, Space.World);
}else{
transform.Rotate(TurnX * Time.deltaTime,Random.Range(3,300) * Time.deltaTime,TurnZ * Time.deltaTime, Space.Self);
transform.Translate(MoveX * Time.deltaTime, MoveY * Time.deltaTime, MoveZ * Time.deltaTime, Space.Self);
}
}
}
Это случайная часть:
Random.Range(3,300)
но так как она меняет случайные числа слишком быстро, изменения почти не видны. Я хочу каким-то образом сделать так, чтобы, например, следующий случайный номер оставался, например, на 5 секунд при этом числе скорости, затем переходил к следующему случайному числу и снова оставался с этим номером 5 секунд и т. Д.
Попробовал это:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Turn_Move : MonoBehaviour {
public int TurnX;
public int TurnY;
public int TurnZ;
public int MoveX;
public int MoveY;
public int MoveZ;
public bool World;
private bool IsGameRunning = false;
// Use this for initialization
void Start ()
{
IsGameRunning = true;
StartCoroutine(SpeedWaitForSeconds());
}
// Update is called once per frame
void Update () {
}
IEnumerator SpeedWaitForSeconds()
{
var delay = new WaitForSeconds(3);//define ONCE to avoid memory leak
while (IsGameRunning)
{
if (World == true)
{
transform.Rotate(TurnX * Time.deltaTime, TurnY * Time.deltaTime, TurnZ * Time.deltaTime, Space.World);
transform.Translate(MoveX * Time.deltaTime, MoveY * Time.deltaTime, MoveZ * Time.deltaTime, Space.World);
}
else
{
transform.Rotate(TurnX * Time.deltaTime, Random.Range(3, 300) * Time.deltaTime, TurnZ * Time.deltaTime, Space.Self);
transform.Translate(MoveX * Time.deltaTime, MoveY * Time.deltaTime, MoveZ * Time.deltaTime, Space.Self);
}
yield return delay;//wait
}
}
}
, но это только вращает объект один раз каждые 3 секунды. и не вращать его все время со скоростью, изменяющейся каждые 3 секунды.