Как полностью остановить объект при респавне?

Сфера после респавна продолжает двигаться в том же направлении в каком была до. Как можно сделать так, чтобы при респавне она останавливалась?

public Rigidbody rb;
public float force;
public Transform respawn;
private void Update()
{
    if (Input.GetKey(KeyCode.W))
        rb.AddForce(Vector3.forward * force * Time.deltaTime);
    if (Input.GetKey(KeyCode.S))
        rb.AddForce(Vector3.forward * -force * Time.deltaTime);
    if (Input.GetKey(KeyCode.D))
        rb.AddForce(Vector3.right * force * Time.deltaTime);
    if (Input.GetKey(KeyCode.A))
        rb.AddForce(Vector3.right * -force * Time.deltaTime);

    if (transform.position.y < 1.82064) // Если упал, то респавн
    {
        transform.position = respawn.transform.position + new Vector3(0, 0.6F, 0);
    }
}

Is kinematic если что пробовал, как можно по другому?


Ответы (1 шт):

Автор решения: KOTlK

Обнулите свойство velocity у компонента rb после респавна. И не нужно использовать AddForce для перемещения объекта, просто присваивайте Rigidbody нужное ускорение (velocity). Так намного проще, потому что не нужно думать что такое force и какую величину нужно задать, чтобы объект двигался с нужной скоростью.

→ Ссылка