Объект должен при столкновении с другим объектом оттолкнуться, но иногда он почему-то этого не делает и я не понимаю почему. Код:
private void Update()
{
lastVelocity = rb.velocity;
}
private void OnCollisionEnter2D(Collision2D collision)
{
var direction = Vector3.Reflect(lastVelocity.normalized, collision.GetContact(0).normal);
rb.velocity = direction * normalSpeed;
if (collision.gameObject.layer != gameObject.layer)
{
collision.gameObject.GetComponent<Cell>().PaintCell(teamNum, teams[teamNum]);
}
}
при абсолютно любом значении normalSpeed он может либо остановится после столкновения, либо оттолкнуться. Сам игрок (объект, что сталкивается) имеет свой слой и коллизия включена только для объектов, имеющих отличный слой. Игрок появляется в клетках с таким же слоем, какой у него, поэтому я не думаю, что он застревает. Единственное, когда игрок сталкивается с клетками имеющими слой отличный от его, он меняет им слой, на свой (захват территории). Но в коде этот процесс происходит после отталкивания (то есть по порядку игрок должен сначала оттолкнуться, а уже потом все остальное). Что может быть не так?