记住在html 5画布上放置砖块的位置

时间:2013-02-21 20:46:47

标签: html5 canvas collision-detection

我正在尝试制作我的第一个html5画布游戏,到目前为止已经提出了这个问题,你可以使用向左,向右和向下箭头键。

你可以在这里看到代码,

http://jsfiddle.net/ShaShads/EWC5B/

我想过使用某种数组和网格,但我真的不知道它是否有效?

var someArray = [];

然后使用数组来存储块,但是对于碰撞检测,我真的不知道!

我碰到了一个碰撞,并且不知道如何在砖块到达底部后开始将砖块留在屏幕上,之后砖块的碰撞会被记住,以便砖块可以堆叠?我不是要求给我一个回答我可以研究的一些指示,以帮助我实现目标,并且谢谢。

这是我的第一款游戏,如果有很多错误请告诉我,我可以改进,再次感谢。

1 个答案:

答案 0 :(得分:0)

屏幕底部

要测试对象是否位于屏幕底部,这只是一个简单的测试:

If obj.y >= (canvas.height - object.height) then don't increase obj y position.

Box Stacking

要让你的盒子堆叠,你需要在每个循环上检查一个特定的盒子是否与另一个盒子碰撞:

for (var i=0; i<boxes.length; i++) {
    var boxA = boxes[i];

    for (var j=0; j<boxes.length; j++) {
        var boxB = boxes[j];

        if (boxA collides with boxB) don't increase boxA y position 
    }
}

请注意,这是非常低效的,但足以满足您的第一场比赛。要获得更有效的方法,请尝试使用此link


这就是它背后的理论。这该怎么做?如果你有一个很好的方法来管理你的盒子,你可以让你的生活更轻松。

例如,您可以拥有一个具有x和y位置以及高度和宽度的box对象。你也可以给它一个isMoving属性,用于确定盒子是否堆叠在地板上或仍在运动中。

这个方法几乎相当于“记住”,因为每个盒子对象都会跟踪它自己的位置。

将这些盒子对象存储在一个数组中,这样您就可以轻松地对盒子进行迭代。