我确实先将变量增加到30,然后将其减少到-30,然后再将其增加回30,但是我这样做是为了使其仅增加,然后我不知道如何减少相同的变量
public float RotationCar = 1;
if (RotationCar < 30)
{
RotationCar += Time.deltaTime * 2;
}
if (RotationCar > 30)
{
RotationCar -= Time.deltaTime * 2;
}
答案 0 :(得分:0)
无论Time.deltaTime
是什么(您一直使用它,因为它一直是积极的,所以我认为是:)),您就很接近目标,将if
替换为{{1 }}:
while
Sp第一个循环执行的时间长达 public float RotationCar = 1;
while (RotationCar < 30)
RotationCar += Time.deltaTime * 2;
while (RotationCar > -30)
RotationCar -= Time.deltaTime * 2;
,每次迭代都会增加变量。
从逻辑上讲,它具有第二个循环,只要它大于-30,它就会降低变量。
答案 1 :(得分:0)
我将假定您正在使用Unity,因为您尚未说明Time.deltaTime
是什么。您可以为此使用一个标志:
private bool increase = true;
if (increase)
{
if (RotationCar < 30)
RotationCar += Time.deltaTime * 2;
else
increase = false;
}
else
{
if (RotationCar > -30)
RotationCar -= Time.deltaTime * 2;
else
increase = true;
}
通过这种方式,将RotationCar
增大到其值> = 30,然后将该标志设置为false
,以便在连续调用Update
时减小该值,直到其值是<= -30。然后将标志设置为true
,并重复该过程。
答案 2 :(得分:0)
您应该使用一些状态变量来使程序保持减少到-30,即使胡萝卜小于30,也可能是一些枚举
public float RotationCar = 1;
public State StateCar = State.Increasing;
if (StateCar == State.Increasing )
{
if (RotationCar < 30)
{
RotationCar += Time.deltaTime * 2;
}
else
{
StateCar = State.Decreasing;
}
}
if (StateCar == State.Decreasing)
{
if (RotationCar > -30)
{
RotationCar -= Time.deltaTime * 2;
}
else
{
StateCar = State.Increasing;
}
}