Обработка, как перевести координаты мыши

Я делаю 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) находится в верхнем левом углу независимо от того, что происходит на вашем экране.

Вы должны перевести эту точку самостоятельно. В вашем случае подойдут некоторые основные вычитания.

Другие вопросы по тегам