Следующая камера с javascript / html canvas для игры - PullRequest
0 голосов
/ 20 октября 2019
    frameUpdate = ()=>{
        canvas = $("canvas")[0]
        c = canvas.getContext('2d')
        c.resetTransform()
        c.clearRect(0, 0, canvas.width, canvas.height);
        LocalPlayer.Move();//if player press arrow keys, changes X any Y values of local player

        c.translate(LocalPlayer.X - (canvas.width/2), LocalPlayer.Y - (canvas.height/2));//not works

        LocalPlayer.Update();//draws Local Player at own X and Y position to canvas
        PList.Update();//draws other players at own X and Y position to canvas


       if (LocalPlayer) {socket.emit('sendplayer',LocalPlayer);}//sends LocalPlayer's data to server
        requestAnimationFrame(frameUpdate)
    }
    requestAnimationFrame(frameUpdate)

Я хочу создать такую ​​игру, как io games, с socket.io и html / canvas, но я не могу сделать так, чтобы камера следовала за игроком, и я не могу найти какое-либо простое решение в Интернете, поэтому, если вы можете, я хочу рассказать мне, какэто работает и что не так в моем коде

Спасибо.

1 Ответ

0 голосов
/ 20 октября 2019

после нескольких тестов с codepen я сам решил свою проблему

function update() {
  c.save();
  camerax = (canvas.width/2)-(playerx);
  cameray = (canvas.height/2)-(playery);
  mtt.innerText = "Camera Position:"+camerax+","+cameray+"\nPlayer Position:"+playerx+","+playery+"\nCanvas:"+canvas.width+","+canvas.height+"\n";
  c.clearRect(0, 0, canvas.width, canvas.height);
  c.translate(camerax, cameray);

   c.fillStyle = 'green';
  c.fillRect(playerx-25, playery-25, 50, 50);
  c.restore();

  requestAnimationFrame(update);
}
requestAnimationFrame(update);
...