Всем привет! Делаю механику, при которой постоянно движущийся объект имеет возможность при определенных условиях заморозиться и через небольшой промежуток времени снова продолжить движение. Не могу понять как сохранить это самое движение. Вот код:
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);
}
Можете ли подсказать, как можно решить эту проблему?