随着时间的推移加速球

时间:2016-02-06 10:09:42

标签: c# unity3d

我有一个球需要在一段时间内加速,但是给力很小。我试图加速Time.deltatime除以特定值,但它不起作用。

这是我的代码示例(要开始游戏,你需要一个水龙头,球会以恒定速度移动)我的问题是如何在一段时间内自动加速球。

void Start () 
{   
    Application.targetFrameRate = 60;
    gameStart = false;

}

void Update ()
{
    if (!gameStart) 
    {
        if (Input.touchCount >= 1) 
        {
            gameStart = true;
            GetComponent<Rigidbody2D> ().AddForce (new Vector2 (1f, 0.5f) * force);


        }
    }
}

2 个答案:

答案 0 :(得分:1)

您可以试试这个,我没有更改任何变量名称以保持对原始代码的熟悉

Rigidbody2D myRigidbody
void Awake(){ myRigidbody = GetComponent<Rigidbody2D>(); }

void Start () 
{   
    Application.targetFrameRate = 60;
    gameStart = false;

    // Invokes the method setGameStartToFalse in 2 seconds, then repeatedly every 1 seconds.
    InvokeRepeating("setGameStartToFalse", 2f, 1.0F);
}

void FixedUpdate ()
{
    if (!gameStart) 
    {
        if (Input.touchCount >= 1) 
        {
            gameStart = true;
            myRigidbody.AddForce(new Vector2 (1f, 0.5f) * force);
        }
    }
}

void setGameStartToFalse()
{
    gameStart = false;
}

答案 1 :(得分:0)

Update()方法中设置gamestart to true,以便应用程序不会在第一个if内执行代码,直到您再次设置gamestart to false为止。您还必须检查是否已启用MonoBehaviour或无法执行更新