Как полностью остановить объект при респавне?
Сфера после респавна продолжает двигаться в том же направлении в каком была до. Как можно сделать так, чтобы при респавне она останавливалась?
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 и какую величину нужно задать, чтобы объект двигался с нужной скоростью.