我在畫布上創建了一個像Super Smash Bros中的相機,其中相機的中心跟隨所有玩家的中心點和比例以包含所有玩家。如何在縮放後正確翻譯我的地圖?
我有它設置,找到2個玩家之間的距離,如果它比畫布大小,相機規模降低以減少塊,玩家精靈的大小等
ctx.scale(cameraS,cameraS);
ctx.translate(-(cameraX*cameraS)+(CANVAS_WIDTH/2),-(cameraY*cameraS)+(CANVAS_HEIGHT/2));
這些是縮放並將繪製的圖像移動到相對於屏幕的位置。
這是使用代碼的實際遊戲,正如您所看到的,圖像的縮放和移動稍微不正確,但我不確定爲什麼! https://dl.dropboxusercontent.com/u/51784213/Conjugate/index.html
作爲參考,紅點是兩個玩家之間的中心位置。線條顯示實際畫布的死點。當縮放比例爲1(完全不縮放)時,紅點完全居中,因爲它應該是。當縮放開始減小時,紅點開始在奇怪的方向偏離中心。
要使代碼正常工作,即使在縮放過程中,點也應始終居中!