如何解决JavaScript自上而下的2d深度排序问题
我的游戏有问题(Nekonoshima,正在进行中)。 我的目标是: 当玩家走到一棵树后面时,它会像这样:(image here)
当玩家走到树前时,它会这样做:(click here)
但是,在几棵树上,它执行以下操作: (image here)
有人可以帮我吗? 另外,这是我的代码:(处理地形的脚本,手工绘制)
var objects={
"birch":{image:"birch.png",basex:32,basey:128,mod:3,collider:[24,116,7,20]},"grass":{image:"grass.png",basex:16,basey:30,mod:2,collider:false}
}
for(var i in objects){
let meow=objects[i].image;
objects[i].image=new Image();
objects[i].image.src=meow;
}
var terrain=undefined;
fs.readFile('./terrain.ex','utf8',function read(err,data) {
if (err) {
throw err;
}
console.log(data)
terrain = JSON.parse(data);
console.log("TERRAIN: ",terrain);
});
function draw(){
let cc=[];
for(var i=0;i<terrain.length;i++){
cc.push(terrain[i]);
}
cc.push({player:true,});
for(var i=0;i<npcs.length;i++){
cc.push({npc:true,x:npcs[i].x,one:npcs[i]})
}
let cow=cc.sort(function(a,b) {
if(a.player){
return ((320-96/2)+24) - (b.x-player.y);
}
else if(b.player){
return (a.y-player.y)- ((320-96/2)+24) ;
}
else{
return (a.y-player.y) - (b.y-player.y);
}
});
for(var i=0;i<cow.length;i++){
if(cow[i].player){
playfur.draw(state,250-96/2,speed)
}
else if (cow[i].npc){
}
else{
ctx.drawImage(objects[cow[i].type].image,(cow[i].x-objects[cow[i].type].basex*objects[cow[i].type].mod)-player.x,(cow[i].y-objects[cow[i].type].basey*objects[cow[i].type].mod)-player.y,objects[cow[i].type].image.width*objects[cow[i].type].mod,objects[cow[i].type].image.height*objects[cow[i].type].mod)
}
}
}
var animation=0;
var fps=20;
ctx.imageSmoothingEnabled = false;
//const playfur=new Fur("minou.png");
function main(e){
if(path){
ctx.clearRect(0,500,500);
keyboard(terrain,objects);
animation++
if(animation>10){
animation=0;
}
//MAIN DRAW
draw();
//HITBox DRAWING
//ctx.fillRect(255-96/2,320-96/2,72,24)
//CHaraCTER DRAWING
//playfur.draw(state,speed)
}}
var maininterval=setInterval(main,1000/fps);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。