Javascript 2D Processingjs游戏中的碰撞

Javascript 2D Processingjs游戏中的碰撞,javascript,2d,processing,Javascript,2d,Processing,我有一个使用ProcessingJS库的Javascript代码 //游戏 变量播放器={ x:50, y:100, 宽度:30, 身高:30, 速度:10.5, 分数:0 }; 食品风险={ x:200, y:200, 宽度:30, 身高:30, 速度:10.5 }; var-up=38; var-down=40; 左var=37; var右=39; draw=函数(){ 背景(155154156); 填充(0,255,85); rect(player.x,player.y,player.w

我有一个使用ProcessingJS库的Javascript代码

//游戏
变量播放器={
x:50,
y:100,
宽度:30,
身高:30,
速度:10.5,
分数:0
};
食品风险={
x:200,
y:200,
宽度:30,
身高:30,
速度:10.5
};
var-up=38;
var-down=40;
左var=37;
var右=39;
draw=函数(){
背景(155154156);
填充(0,255,85);
rect(player.x,player.y,player.width,player.height);
填充(245,3,3);
rect(food.x,food.y,food.width,food.height);
文本(“分数:”+玩家分数,50,50);
};
var collide=函数(){
如果(player.xfood.x&&
player.yfood.y){
返回true;
}否则{
返回false;
}
};
按下键=函数(){
开关(钥匙代码){
个案:
player.y-=player.speed;
打破
按大小写:
player.y+=player.speed;
打破
案例权利:
player.x+=player.speed;
打破
案例左:
player.x-=player.speed;
打破
违约:
打破
}
if(碰撞()){
while(collide()){
如果(/*条件*/){
//做什么?
};
}
}
};1)我不想猜测玩家应该回到哪里,而是先在每个按键的开始处存储玩家的位置

keyPressed = function(){
    var oldX = player.x;
    var oldY = player.y;
    //do the other stuff
现在,如果发生碰撞,你可以用player.x=oldX等将他放回原来的位置。当然,这可能会使他后退太远

2) 相反,您可以使用更接近您的方法的东西。你知道玩家是从哪个方向来的,因为你按下了键,你知道你需要把他移回多远,因为你有“食物”的坐标。我们可以跳过“while(collided)if(condition)”,直接将另一个开关放入“if(collided)”

3) 最后,可能是您对连续签入进行了编码,因为您希望添加更多障碍物,并认为这是确保玩家不会与任何东西碰撞的最简单方法。如果是这样的话,我建议您进一步了解类和对象是如何工作的(如果您希望自己编写所有代码),或者查找冲突库(如果您希望它更高效)。如果你想扩大游戏范围或增加功能,这种硬编码的方法可能会让你以后感到头疼。

1)我不会试图猜测玩家应该回到哪里,而是先在每个按键的开始处存储玩家的位置

keyPressed = function(){
    var oldX = player.x;
    var oldY = player.y;
    //do the other stuff
现在,如果发生碰撞,你可以用player.x=oldX等将他放回原来的位置。当然,这可能会使他后退太远

2) 相反,您可以使用更接近您的方法的东西。你知道玩家是从哪个方向来的,因为你按下了键,你知道你需要把他移回多远,因为你有“食物”的坐标。我们可以跳过“while(collided)if(condition)”,直接将另一个开关放入“if(collided)”

3) 最后,可能是您对连续签入进行了编码,因为您希望添加更多障碍物,并认为这是确保玩家不会与任何东西碰撞的最简单方法。如果是这样的话,我建议您进一步了解类和对象是如何工作的(如果您希望自己编写所有代码),或者查找冲突库(如果您希望它更高效)。如果你想扩大游戏范围或增加功能,这种硬编码的方法可能会让你以后头疼