Уроки · 17
Смещение
Возьмём координаты курсора из урока «Координаты мыши» и прибавим к ним число. Оказывается, этого достаточно, чтобы сдвинуть точку в сторону — простая операция, но не все сразу догадываются, что она вообще для этого годится.
К x прибавили положительное число — точка сдвинулась вправо,
прибавили отрицательное — влево. С y то же самое, но помни про
урок «Координаты»: ось y растёт вниз, а не
вверх, —
поэтому прибавление к y сдвигает точку вниз, а отрицательное
число — вверх.
let x = mouse_x + 100.0; // сдвиг вправо на 100 пикселейlet y = mouse_y - 50.0; // сдвиг вверх на 50 пикселейПопробуй сам
Заголовок раздела «Попробуй сам»Двигай мышь над демкой — маленькая белая точка отмечает саму
позицию курсора. Жёлтый кружок стоит от неё на смещении, заданном
полями ниже. Поставь оба поля в 0 — кружок точно
совпадёт с точкой курсора и скроет её под собой:
use macroquad::prelude::*;
#[macroquad::main("Смещение")]async fn main() { loop { clear_background(BLACK);
// Координаты курсора. let (mouse_x, mouse_y) = mouse_position();
// Белая точка — сама позиция курсора, просто ориентир. draw_circle(mouse_x, mouse_y, 8.0, WHITE);
// Жёлтый кружок — курсор плюс смещение. draw_circle(mouse_x + 0.0, mouse_y + 0.0, 40.0, YELLOW);
next_frame().await; }}Что здесь происходит
Заголовок раздела «Что здесь происходит»mouse_x + offset x— сдвигает жёлтый кружок по горизонтали: вправо, если число положительное, влево, если отрицательное.mouse_y + offset y— то же самое по вертикали, только не забывай про направление осиy.- Белая точка нарисована прямо по
mouse_x, mouse_y, без всякого смещения — она и показывает, где на самом деле находится курсор, для сравнения с жёлтым кружком.