У меня возникли проблемы с попыткой реализовать метод, который перемещает Rect во флаттере с использованием игрового движка пламени. Конечная цель - провести пальцем в нужном направлении и заставить Rect двигаться в этом направлении с постоянной скоростью. Я нашел этот код:
void dragUpdate(DragUpdateDetails d)
{
final delta = d.delta;
final size = gameController.screenSize;
double translateX = delta.dx;
double translateY = delta.dy;
// Make sure that the player never goes outside of the screen in the X-axis
if (playerRect.right + delta.dx >= size.width) {
translateX = size.width - playerRect.right;
} else if (playerRect.left + delta.dx <= 0) {
translateX = -playerRect.left;
}
// Make sure that the player never goes outside of the screen in the Y-axis
if (playerRect.bottom + delta.dy >= size.height) {
translateY = size.height - playerRect.bottom;
} else if (playerRect.top + delta.dy <= 0) {
translateY = -playerRect.top;
}
playerRect = playerRect.translate(translateX, translateY);
}
что, по крайней мере, позволяет свободно перемещать Rect по экрану в зависимости от положения пальцев. Я пробовал возиться с методом translate (), чтобы увеличить / уменьшить x / y в зависимости от предоставленной дельты, но безрезультатно. Мы будем очень признательны за любой намек или указание в правильном направлении.