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

267
Visualizações
¿Por qué mi código de colisión no funciona en absoluto?

Soy relativamente nuevo en JavaScript y estoy buscando crear un juego de plataformas para un proyecto de clase. He probado varias formas de hacer que el rectángulo de un jugador choque con un rectángulo de obstáculos, pero ninguna ha funcionado como pretendía. Este método que escribí yo mismo no funciona en absoluto, y no tengo ni idea de por qué.

 var ctx = myCanvas.getContext("2d"); var fps = 50 var level = 1 var gravity = 0.5 var player = { x: 0, y: 0, x_v: 0, y_v: 0, width: 20, height: 20, speed: 3, jump: 10, color: "blue" } const obstacle = { x: 0, y: 550, width: 600, height: 100, color: "black" } function MyKeyUpHandler(MyEvent) { if (MyEvent.keyCode == 37 || MyEvent.keyCode == 39) { player.x_v = 0 }; // not left or right if (MyEvent.keyCode == 38 || MyEvent.keyCode == 40) { player.y_v = 0 }; // not up or down } function MyKeyDownHandler(MyEvent) { if (MyEvent.keyCode == 37) { player.x_v = -player.speed }; // left if (MyEvent.keyCode == 38) { player.y_v = -player.jump }; // up if (MyEvent.keyCode == 39) { player.x_v = player.speed }; // right MyEvent.preventDefault(); } function renderplayer() { player.y_v = player.y_v + gravity player.x = player.x + player.x_v player.y = player.y + player.y_v ctx.fillStyle = player.color ctx.fillRect(player.x, player.y, player.width, player.height) } function renderobstacle() { ctx.fillStyle = obstacle.color ctx.fillRect(obstacle.x, obstacle.y, obstacle.width, obstacle.height) } function collision() { if (player.y == obstacle.y - player.height) { player.y_v = 0 } } function frameyshit() { ctx.clearRect(0, 0, 600, 600) renderplayer(); renderobstacle(); collision(); if (player.y >= 600) { player.y = 1 player.x = 1 player.y_v = 0 } } setInterval(frameyshit, 1000 / fps) addEventListener("keydown", MyKeyDownHandler) addEventListener("keyup", MyKeyUpHandler)
 <canvas id=myCanvas width=600 height=600 style="background-color: transparent;"> </canvas>

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