Как оптимизировать прыжок как в Flappy Bird в Unity? - PullRequest
0 голосов
/ 06 марта 2019

я могу как-нибудь написать этот код для оптимизации? Если не использовать сопрограммы, когда я нажимаю на пробел, следующий прыжок имеет больше силы и так далее. Если использовать rb.MovePosition, персонаж будет двигаться как 15 кадров в секунду. Я знаю, время изменения в настройках. Но я хочу знать, существует ли другой метод ...

private void Update() {
    if(Input.GetKeyDown(KeyCode.Space)) {
        StopAllCoroutines();
        StartCoroutine(Jump());
    }
}

private IEnumerator Jump() {
    if(rb.bodyType != RigidbodyType2D.Dynamic) {
        rb.bodyType = RigidbodyType2D.Dynamic;
    }

    rb.constraints = RigidbodyConstraints2D.FreezePositionY;
    _pos = transform.position;

    for (float t = 0; t < 1; t += Time.deltaTime * 4f)
    {
        transform.position = Vector3.Lerp(transform.position, new Vector3(transform.position.x, _pos.y + .35f, transform.position.z), t);
        yield return null;
    }

    rb.constraints = RigidbodyConstraints2D.None;
}

1 Ответ

0 голосов
/ 06 марта 2019

Твердые тела существуют, поэтому вам не нужно напрямую настраивать преобразование объекта. Так как у вас есть Rigidbody2d, вы можете просто установить скорость напрямую:

public float jumpSpeed = 5f; // Whatever feels right
private void FixedUpdate() {
    if(Input.GetKeyDown(KeyCode.Space)) {
        rb.velocity = Vector2.up * jumpSpeed;
    }
}

(отредактировано для использования velocity вместо AddForce)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...