Задержка в void функции Start () (C # Unity3D) - PullRequest
0 голосов
/ 24 апреля 2019

Так что я хочу, чтобы мой персонаж менял положение и прыгал в зависимости от обратного отсчета, но как я могу сделать это в функции start (), я знаю о функции Update (), но там он улетит далеко. Проверьте код, вот что я пробовал, есть идеи? Спасибо.

private Rigidbody2D rb2de;
public float enemyJump;
float transformTime = 15.0f;


void Start()
{
    rb2de = GetComponent<Rigidbody2D>();
    rb2de.AddForce(new Vector2(rb2de.velocity.x, enemyJump));

    transformTime -= Time.deltaTime;
    if (Mathf.Round(transformTime) == 12) ;
    transform.position = new Vector3(4, transform.position.y, transform.position.z);
    rb2de.AddForce(new Vector2(rb2de.velocity.x, enemyJump / 12));



}

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Функция Start может быть сопрограммой, попробуйте это

IEnumerator Start () { ... yield return new WaitForSeconds (12f); ... }

0 голосов
/ 24 апреля 2019

все что вам нужно, это использовать Coroutine.например

void Start()
{
   rb2de = GetComponent<Rigidbody2D>();
   rb2de.AddForce(new Vector2(rb2de.velocity.x, enemyJump));
   StartCoroutine($yourname());
}
IEnumerator $yourname()
{
   yield return new WaitForSeconds($waitingTime)
   transform.position = new Vector3(4, transform.position.y, transform.position.z);
   rb2de.AddForce(new Vector2(rb2de.velocity.x, enemyJump / 12));
}
...