vkvk
@vkvk

Как сохранить движение после заморозки объекта?

Всем привет! Делаю механику, при которой постоянно движущийся объект имеет возможность при определенных условиях заморозиться и через небольшой промежуток времени снова продолжить движение. Не могу понять как сохранить это самое движение. Вот код:
private Rigidbody2D rb;
    private float normalSpeed = 1;
    private Vector3 lastVelocity;
    public bool freezeMove;

    private void Start()
    {
        rb = GetComponent<Rigidbody2D>();

        var direction = Random.insideUnitCircle;

        rb.AddForce(direction * 4 * 20);
    }

    private void Update()
    {
        lastVelocity = rb.velocity;

        if (freezeMove)
        {
            rb.constraints = RigidbodyConstraints2D.FreezePosition;
        }
        else
        {
            rb.constraints = RigidbodyConstraints2D.None;
        }
    }

    private void OnCollisionEnter2D(Collision2D collision)
    {
        var speed = lastVelocity.magnitude;
        var direction = Vector3.Reflect(lastVelocity.normalized, collision.GetContact(0).normal);

        rb.velocity = direction * Mathf.Max(speed, normalSpeed);
    }

Можете ли подсказать, как можно решить эту проблему?
  • Вопрос задан
  • 43 просмотра
Решения вопроса 1
@Ezekiel4
Охотник на пиратов и сборщик монолитов
Создайте локальную переменную типа Vector3. Сохраните данные из rigidbody.velocity. Загружайте через метод rigidbody.addforce с установкой силы на ForceMode.VelocityChange. Не поможет - пишите в коменты
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы