HTML5 画布对象碰撞和物理

html5 canvas object collisions and physics

本文关键字:碰撞 对象 布对象 HTML5      更新时间:2023-09-26

我正在开发一个简单的html5平台游戏,构建以前的游戏,但在碰撞和物理方面遇到问题。 下面是有关地板及其如何处理碰撞的代码示例。 完整的代码在这里。 http://www.ambitiongames.co.uk/dev/game.php 游戏在这里 http://www.ambitiongames.co.uk/dev/

我遇到的问题是碰撞是基于事件抓取,有时会让玩家在地板上而不是在地板上。

此外,由于跳跃和下落工作的方式没有重力,这意味着玩家可以简单地跳上更高的壁架,然后走到空中。

建立永久重力状态的好方法是什么?

与地板或其他物体互动/碰撞的好方法是什么?

        that.draw = function(){  
            try {  
                ctx.drawImage(that.image, that.x, that.y, that.width, that.height);  
                } catch (e) {  
                }  
        } 
        return that;  
    };
    var nrOffloors = 40,   
        floors = [],  
        floorWidth = 20,  
        floorHeight = 40;  
        var generatefloor = function(){  
            for (var i = 0; i < 10; i++) {  
                floors[i] = new Floor(i * 20,280);   
            } 
            for (var i = 10; i < 12; i++) {  
                floors[i] = new Floor(i * 20,260);   
            } 
        }();
    var checkCollisionfloor = function(){  
        floors.forEach(function(e, ind){  
            if (   
                (player.X < e.x + floorWidth) &&   
                (player.X + player.width > e.x) &&   
                (player.Y + player.height > e.y) &&   
                (player.Y + player.height < e.y + floorHeight)  
                ) {  
                    e.onCollide();  
                } 
        });     
    } 

你可以尝试像Box2D.js这样的库。它可以处理从碰撞检测到重力的所有内容。

查看它的演示。