Обработка, как перевести координаты мыши
Я делаю 2d plat бывшую игру esc, и моя игра переводит мои символы x и y, чтобы мои персонажи всегда были в центре экрана, однако кажется, что mouseX и mouseY не переводят... как бы я конвертировал мышиный и мышиный шнуры?
вот мой код перевода
void draw() {
background(100);
if (updateBlocks == true) {
updateBlocks();
}
pushMatrix();
translate(-player.location.x + 320, -player.location.y + 320);
mx = mouseX -player.location.x + 320;
my = mouseY -player.location.y + 320;
for(int a = 0; a < mapWidth; a ++) {
for(int b = 0; b < mapHeight; b ++) {
if(mx >= 16 * a && mx <= 16 * a + 16 && my >= 16 * b && my <= 16 * b + 16) {
map[a][b] = 1;
updateBlocks();
break;
}
}
}
for (int a = validBlocks.size()-1; a >= 0; a --) {
PVector validBlock = validBlocks.get(a);
rect(validBlock.x, validBlock.y, 16, 16);
}
player.update();
player.display();
popMatrix();
}
1 ответ
Решение
Да, mouseX и mouseY относятся к вашему окну, независимо от матрицы преобразования (перевод, поворот и т. Д.). (0, 0) находится в верхнем левом углу независимо от того, что происходит на вашем экране.
Вы должны перевести эту точку самостоятельно. В вашем случае подойдут некоторые основные вычитания.