因此,我正在创建一个非常简单的游戏,因为它是一个秘密,所以不愿透露它的含义,但是我有一个名为“ rpm”的变量,每帧,它将使对象旋转“ rpm”。但是每秒钟rpm将增加0.1,我该怎么做,我尝试使用2个不同的脚本,并且在同一脚本中使用线程,但是由于我对C#还是很陌生,所以我想知道如何实现此目标,非常感谢您的帮助
脚本1
public class Rotate : MonoBehaviour
{
public float rpm = RPM.rpm;
// Update is called once per frame
void Update ()
{
transform.Rotate(0, rpm, 0);
}
}
脚本2
public class RPM : MonoBehaviour
{
public static float rpm = 0.1f;
void Update()
{
System.Threading.Thread.Sleep(1000);
rpm = rpm + 0.1f;
}
}
所有这些操作是,不增加rpm,因此它保持相同的旋转速率,但不是每帧旋转一次,而是每秒旋转一次,我不想。
再次感谢您的帮助,如果您需要任何其他信息,请告诉我 谢谢
答案 0 :(得分:2)
这是一段代码,可以满足您的要求
public class RPM : MonoBehaviour
{
public static float rpm = 0.1f;
private float elapsed = 0.0f;
void Update()
{
elapsed += Time.deltaTime;
if (elapsed >= 1.0f) {
rpm = rpm + 0.1f;
elapsed = 0.0f;
}
}
}
Time.deltaTime 等于自游戏最后一帧以来经过的时间(以秒为单位)。只需通过在每帧中添加Time.deltaTime,经过的变量就可以跟踪经过了多少时间。当经过的时间大于1秒时,您的rpm变量将增加,并且经过的变量将重置为0。
我建议阅读有关Time对象的不同属性。您可能最终会大量使用它。