JavaScript上的冲突

JavaScript上的冲突,javascript,html,Javascript,Html,我有以下JavaScript代码。使用WASD键,我想控制它的移动。我现在想做的是,如果黑方与红方碰撞,它将停止。它不应该通过红场,但我几乎不知道如何检测侧面碰撞 这就是我迄今为止所尝试的。当黑色方块碰到其中一条边时,它能够停止。现在我想让它也这样做,但红场的另一边是红场 function onkeydown(e) { if (e.keyCode == 68 && rectX + 30 < canvas.width) { rectX++; } else if

我有以下JavaScript代码。使用WASD键,我想控制它的移动。我现在想做的是,如果黑方与红方碰撞,它将停止。它不应该通过红场,但我几乎不知道如何检测侧面碰撞

这就是我迄今为止所尝试的。当黑色方块碰到其中一条边时,它能够停止。现在我想让它也这样做,但红场的另一边是红场

function onkeydown(e) {
  if (e.keyCode == 68 && rectX + 30 < canvas.width) {
    rectX++;
  } else if (e.keyCode == 65 && rectX > 0) {
    rectX--;
  } else if (e.keyCode == 87 && rectY > 0) {
    rectY--;
  } else if (e.keyCode == 83 && rectY + 30 < canvas.height) {
    rectY++;
  }
  fillRect();
}

window.addEventListener("keydown", onkeydown);
函数onkeydown(e){
if(e.keyCode==68&&rectX+300){
直肠--;
}否则如果(e.keyCode==87&&rectY>0){
直肠--;
}否则如果(e.keyCode==83&&rectY+30
如果不在不同的变量中写入坐标,则无需每次都重建
me
对象,但我会这样做:

var画布;
var语境;
var-ctx;
var-rectX=10;
var-rectY=10;
变量对象={
身高:50,
宽度:50,
x:10,
y:10,
//颜色:“FF0000”
}
var-spd=100;
window.onload=函数(){
canvas=document.getElementById(“canvas1”);
context=canvas.getContext(“2d”);
ctx=canvas.getContext(“2d”);
画布宽度=400;
画布高度=400;
fillRect();
}
函数isIn(me,数组){
for(数组的var值){
如果((me.x+me.width>value.x&&me.xvalue.y&&me.y0){
直肠--;
var newMe=(Object.assign)({
x:rectX,
y:rectY,
}(我),;
if(isIn(新地形、地形)){
rectX++;
}
}否则如果(e.keyCode==87&&rectY>0){
直肠--;
var newMe=(Object.assign)({
x:rectX,
y:rectY,
}(我),;
if(isIn(新地形、地形)){
rectY++;
}
}否则如果(e.keyCode==83&&rectY+30

如果不在不同的变量中写入坐标,则无需每次都重建
me
对象,但我会这样做:

var画布;
var语境;
var-ctx;
var-rectX=10;
var-rectY=10;
变量对象={
身高:50,
宽度:50,
x:10,
y:10,
//颜色:“FF0000”
}
var-spd=100;
window.onload=函数(){
canvas=document.getElementById(“canvas1”);
context=canvas.getContext(“2d”);
ctx=canvas.getContext(“2d”);
画布宽度=400;
画布高度=400;
fillRect();
}
函数isIn(me,数组){
for(数组的var值){
如果((me.x+me.width>value.x&&me.xvalue.y&&me.y0){
直肠--;
var newMe=(Object.assign)({
x:rectX,
y:rectY,
}(我),;
if(isIn(新地形、地形)){
rectX++;
}
}否则如果(e.keyCode==87&&rectY>0){
直肠--;
var newMe=(Object.assign)({
x:rectX,
y:rectY,
}(我),;
if(isIn(新地形、地形)){
rectY++;
}
}否则如果(e.keyCode==83&&rectY+30

到目前为止做得不错。Mozilla开发者网站实际上有一个基本的JavaScript突破式游戏教程,其中一部分是碰撞检测,我会浏览一下,可能会浏览一下教程,这应该也会有帮助,
e.keyCode
不推荐使用,看看KeyboardEvent.code,到目前为止做得不错。Mozilla开发者网站实际上有一个基本的JavaScript突破式游戏教程,其中一部分是碰撞检测