Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

186
Visualizações
Mapa del juego con lienzo - Límites de dibujo para el jugador en cierto punto

Estoy escribiendo un juego multijugador básico y trabajando en la representación del cliente de los datos enviados por el servidor, pero he estado perplejo con esta pregunta durante unos días.

Básicamente, el mapa del juego es de 6000x6000 (cuando el jugador llega a -3000 o 3000 en x o y, deja de moverse). En relación con las coordenadas del jugador (la ventana gráfica está determinada por una traducción del jugador a 0,0), se dibuja una cuadrícula detrás del jugador, dando la sensación de movimiento. Sin embargo, me gustaría que la cuadrícula solo se extienda hasta los bordes del área de 6000x6000, para que el jugador pueda ver que ha llegado al final del mapa.

Inicialmente, intenté usar las coordenadas del jugador para determinar si el borde del mapa es visible y, en ese caso, solo dibujé detrás o delante del jugador para indicar el final del mapa.

mi función de dibujar se ve así:

 /* * Function drawBoard - draws grid on canvas * takes 2 args, height, width of game canvas */ var drawBoard = function(w, h) { ctx.beginPath(); // vertical lines for (x = 0; x <= w; x += 50) { // draw after player // -3000, 3000 is map top right if (ship.pos.x >= (-3000-(w/2))) { ctx.moveTo(x+ship.pos.x, 0); ctx.lineTo(x+ship.pos.x, h); } // draw before player // 3000, 3000 is map top left if (ship.pos.x <= (3000+(w/2))) { ctx.moveTo(ship.pos.xx, 0); ctx.lineTo(ship.pos.xx, h); } // horizontal lines for (y = 0; y <= h; y += 50) { if (ship.pos.x >= (-3000-(h/2))) { ctx.moveTo(0, y+ship.pos.y); ctx.lineTo(w, y+ship.pos.y); } if (ship.pos.x <= (3000+(h/2))) { ctx.moveTo(0, ship.pos.yy); ctx.lineTo(w, ship.pos.yy); } } } ctx.strokeStyle = "gray"; ctx.stroke(); ctx.closePath(); };

Busqué extensamente un problema similar, pero no pude encontrar ninguno, por lo que agradecería algunos consejos/indicadores sobre cómo resolver esto.

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda