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