Если ваши объекты используют компонент RigidBody2D
, вы можете попробовать изменить режим обнаружения столкновений с «Дискретный» на «Непрерывный».
Чтобы объекты не сталкивались друг с другом, поместите этот код передкод, который перемещает объект:
Vector2 difference = target - (Vector2)transform.position;
RaycastHit2D[] hit = new RaycastHit2D[1];
if (Physics2D.CircleCast(transform.position, radius, difference.normalized, new ContactFilter2D(), hit, difference.magnitude) > 0) {
// Something is in the way
float firstObstacleDistance = hit[0].distance;
target = difference.normalized * firstObstacleDistance;
}
Переменная target
должна быть позицией мыши, а radius
- радиусом компонента CircleCollider
.