Kamera di Kanvas HTML 5

poster pertama kali di sini,

Saya telah mencari solusi untuk ini selama berhari-hari tetapi tidak berhasil, jika diminta, saya mohon Anda untuk menautkan saya karena saya tidak dapat menemukannya. Bagaimanapun, begini:

Saya sedang mengerjakan aplikasi kanvas berbasis ubin dan mengalami masalah saat menggerakkan kamera. Pada dasarnya saya ingin menjaga pahlawan di tengah layar kecuali dia mendekat dan mendekat. Saya telah mencoba menerjemahkan kanvas saat pahlawan bergerak tetapi mengalami masalah dengan pemotongan. Saya akhirnya mengerjakan ulang logika saya dan sekarang mencari tahu di mana harus mulai menggambar berdasarkan koordinat pahlawan dan kemudian menjaga pahlawan saya tetap digambar di tengah kanvas, itu berfungsi dengan baik sampai saya mendekati tepi layar. Ini kode saya saat ini untuk menggambar peta, leoX dan leoY adalah koordinat absolut pahlawan, kanvasnya 600X600

var topLeftX = Math.floor((leoX - 300)/33);
var topLeftY = Math.floor((leoY - 300)/33);


//draw map
for(var rowCtr=topLeftY;rowCtr<mapRows;rowCtr++){
for(var colCtr=topLeftX;colCtr<mapCols;colCtr++){

  var tileId = tileMap[rowCtr][colCtr]+ mapIndexOffset;
  var mapSourceX = Math.floor(tileId % 8 )*33;
  var mapSourceY = Math.floor(tileId / 8 )*33;
  context.drawImage(map, mapSourceX, mapSourceY,33,33,(colCtr-topLeftX)*33,(rowCtr-        topLeftY)*33,33,33);

 }
}
//code to draw leo
context.drawImage(tilesheet, sourceX,sourceY,32,48,300,300,32,48);

//update leo's position                 
leoX += leoDeltaX;
leoY += leoDeltaY;

EDIT: Tautan ke contoh sekarang sudah mati.


person Contristo    schedule 17.08.2011    source sumber
comment
Saya pikir saya mungkin telah memecahkan masalah ini, menurut saya ini tidak cantik atau elegan tetapi pada dasarnya, saya hanya menjalankan pemeriksaan untuk melihat apakah saya berada di tepi atau sudut peta dan menggambar secara berbeda. Saya akan memposting solusi saya ketika saya benar-benar telah menggambar pahlawan dengan benar.   -  person Contristo    schedule 18.08.2011
comment
Baiklah, pada dasarnya kode di atas berfungsi tetapi ada beberapa hal yang hilang, karena posisi satu leo ​​di kanvas seharusnya hanya berukuran 0,5 lebar kali 0,5 tinggi kanvas jika dia tidak berada di sudut atau tepi, jadi yang saya lakukan adalah buatlah variabel bernama customizedXPos dan customizedYPos yang diset tergantung posisinya, kalau misalnya dia di pojok kiri atas, sebenarnya kita bisa menggunakan posisi x,y aktualnya saja. Di tepi samping kita ingin y tetap pada ketinggian 0,5 sehingga kamera masih bergulir ke atas tetapi ingin x mewakili posisi Leo.   -  person Contristo    schedule 18.08.2011
comment
perlu diingat bahwa Anda perlu melakukan offset di sisi kanan karena layar tidak lagi bergulir. Semoga ini bisa membantu seseorang di masa depan yang sama noobnya dengan saya.   -  person Contristo    schedule 18.08.2011
comment
Apakah menurut Anda Anda sendiri yang telah menjawab pertanyaan ini sekarang? Apakah bisa ditutup?   -  person andrewmu    schedule 06.09.2011
comment
Jika Anda sudah menyelesaikannya, maka kirimkan solusi Anda sebagai jawaban dan terima jika Anda tidak mendapatkan jawaban yang lebih baik dalam 2 hari.   -  person Some Guy    schedule 12.09.2011
comment
terkait thread baru: Objek ikuti Kanvas HTML5   -  person Gustavo Carvalho    schedule 08.06.2013