我有一个逻辑问题,也许你们聪明的人可以帮我解决。我正在使用 Canvas 学习 Javascript,并且正在尝试使用纯 Javascript 构建一种“突围”游戏。
http://www.seas.upenn.edu/~cis120e/hw/SwingGame/images/breakout.png
我创建了桨、球,然后是一组具有不同属性(xPos、yPos、宽度......等)的块对象,现在我试图检测球与顶部块的碰撞屏幕。
这就是我的做法:
//This is my block Object definition
function block(x,y,width,height){
this.x = x;
this.y = y;
this.width = width;
this.height = height;
ctxBlock.fillStyle = 'green';
ctxBlock.fillRect(this.x, this.y, this.width, this.height);
}
//This is for draw blocks on the canvas
mattone.prototype.draw = function(){
ctxBlock.fillStyle = 'green';
ctxBlock.fillRect(this.x, this.y, this.width, this.height);
}
//This is the check for collision method
var blocks = [];
function checkCollision(){
for (var i = 0; i < blocks.length; i++){
if(ballY - ballRadius <= blocks[i].y + blockWidth){
ctxBlocks.clearRect(tmpx, tmpy, blockWidth, blockHeight);
speedY = (-speedY);
break;
}
}
checkColl = requestAnimationFrame(checkCollision);
}
基本上我想告诉画布,当球的“Y”是“<”然后是块数组中一个块的“Y”(循环槽并检查每个块)时,他必须删除那块并反弹下来。
但它所做的始终是取消该行块中左侧的第一个块,而不是他触摸的块。
这应该是我的代码链接的链接 *请注意我在我的代码中使用了 mattoni 这个词而不是块
祝大家有个愉快的一天