Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

187
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!