Javascript 画布x-y坐标检测

Javascript 画布x-y坐标检测,javascript,html,Javascript,Html,我正在做一个迷你游戏,似乎无法让我的玩家在绿色广场上移动,但却无法通过它。当我尝试我的当前代码时,角色可以靠近它移动,但没有通过绿色正方形的x,y坐标。请帮忙 #帆布{ 背景色:黑色; } var canvas=document.getElementById(“canvas”); var context=canvas.getContext(“2d”); var-px=100; var-py=100; var-pw=10; var-ph=10; var-ex=10; var ey=10; va

我正在做一个迷你游戏,似乎无法让我的玩家在绿色广场上移动,但却无法通过它。当我尝试我的当前代码时,角色可以靠近它移动,但没有通过绿色正方形的x,y坐标。请帮忙


#帆布{
背景色:黑色;
}
var canvas=document.getElementById(“canvas”);
var context=canvas.getContext(“2d”);
var-px=100;
var-py=100;
var-pw=10;
var-ph=10;
var-ex=10;
var ey=10;
var-ew=10;
var-eh=10;
window.addEventListener(“keydown”,moveChar);
addEventListener(“keyup”,moveChar);
window.addEventListener(“按键”,moveChar);
//帧更新
setInterval(函数(){
draw();
碰撞();
}, 1);
函数绘图(){
//清除垃圾
clearRect(0,0,canvas.width,canvas.height);
//吸引玩家
context.fillStyle=“红色”;
上下文.fillRect(px,py,pw,ph);
context.fill();
context.fillStyle=“绿色”;
context.fillRect(ex,ey,ew,eh);
context.fill();
}
函数冲突(){
如果(pxex){
px++;
}
如果(pyey){
py++;
}
}
函数moveChar(){
var k=event.which | | event.keyCode;
如果(k==37){
px-=1;
}
如果(k==38){
py-=1;
}
如果(k==39){
px+=1;
}
如果(k==40){
py+=1;
}
}

您的冲突代码打算做什么?当你向上移动角色时,你执行px-1,但当它满足if条件时,你执行px+1。减去一,然后直接加一。

也许看看这个关于2D形状的答案,我希望红方块绕着绿方块移动,但不要穿过它。当我加上px和py时,它会检测到两者之间的碰撞,然后再加上一个,这样它就不会穿过绿色的正方形。问题在于if语句生成的不可见边界。我无法理解这一点,所以我很快添加了一些函数,我相信它们可以实现您想要的功能或部分功能。。。将有更多的案例需要涵盖,但这应该是一个起点。我试图将每一步提取到具有长名称的函数中,这些长名称告诉您它们的功能。希望这有帮助。