2016-02-06 5 views
0

У меня есть мяч, который нужно ускорить во время, но при этом очень мало силы. Я попытался ускориться с 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); 


     } 
    } 
} 
+0

ваш подход кажется нормально для меня, что проблема? – sami1592

+1

Еще одна вещь. Если вы установите для параметра 'gameStart' значение true в цикле обновления, как это, тогда во всей программе он будет вызываться только один раз. Вы снова задали значение false в другом месте? :/ – sami1592

+0

Я думаю, что через некоторое время вы захотите сделать это ускорение, и для повторного использования вы можете использовать эту функцию http://docs.unity3d.com/ScriptReference/MonoBehaviour.InvokeRepeating.html – sami1592

ответ

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; 
} 
+0

Спасибо. Этот код ускоряет мой мяч каждый раз, когда я нажимаю экран. Кажется хорошо, но проблема с орбитой. Раньше мяч с постоянной скоростью имел одну и ту же орбиту (вычитается из краев с углом около 45), с этим кодом мяч имеет непредсказуемую орбиту. – mavericks

+0

** 1. ** _ Мне нужен шарик, который шаг за шагом ускоряется в течение времени_ - если вы этого не хотите, то прокомментируйте эту строку 'if (Input.touchCount> = 1)' ** 2. ** Из приведенного контекста я ничего не могу собрать об этой «орбите» и о том, как вы ее работали в вашем текущем контексте. Немного подробностей будет полезно – sami1592

+0

** if (Input.touchCount> = 1) ** Я помещаю этот код только для одного вызова (экран пользовательского подключения и мяч начнут двигаться с постоянной скоростью). Теперь я нахожу способ дать этому шару немного ускоряться во время, но без какого-либо прикосновения (автоматически). Я предполагаю, что пользователь играет в игру, и этот мяч двигается все быстрее и быстрее во время. О орбите, мяч всегда имеет ту же орбиту, что и http://oi64.tinypic.com/14l7n01.jpg :) – mavericks

0

В Update() методе вы установите gamestart to true так что приложение не будет выполнять код внутри первого if, пока не будет установлен снова gamestart to false. Кроме того, необходимо проверить, что MonoBehaviour включена или обновление не будет выполняться

Смежные вопросы