Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript html5画布对象碰撞和物理_Javascript_Html_Html5 Canvas_Game Physics_Collision - Fatal编程技术网

Javascript html5画布对象碰撞和物理

Javascript html5画布对象碰撞和物理,javascript,html,html5-canvas,game-physics,collision,Javascript,Html,Html5 Canvas,Game Physics,Collision,我正在开发一个简单的html5平台,构建一个以前的游戏,但在碰撞和物理方面有困难。下面是有关地板及其如何处理碰撞的代码示例。完整的代码在这里。比赛就在这里 我遇到的问题是碰撞是基于事件抓取的,有时会让球员留在地板上而不是地板上 此外,由于跳跃和坠落的方式没有重力,这意味着玩家可以简单地跳到更高的壁架上,然后走到空中 建立永久重力状态的好方法是什么 与地板或其他物体交互/碰撞的好方法是什么 that.draw = function(){ try {

我正在开发一个简单的html5平台,构建一个以前的游戏,但在碰撞和物理方面有困难。下面是有关地板及其如何处理碰撞的代码示例。完整的代码在这里。比赛就在这里

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

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

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

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

        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();  
                } 
        });     
    } 
that.draw=function(){
试试{
ctx.drawImage(that.image,that.x,that.y,that.width,that.height);
}第(e)款{
}  
} 
归还;
};
var nrOffloors=40,
楼层=[],
楼宽=20,
地板高度=40;
var generatefloor=function(){
对于(var i=0;i<10;i++){
楼层[i]=新楼层(i*20280);
} 
对于(var i=10;i<12;i++){
楼层[i]=新楼层(i*20260);
} 
}();
var checkCollisionfloor=函数(){
楼层。forEach(功能(e,ind){
如果(
(玩家Xe.X)和
(player.Y+player.height>e.Y)和
(player.Y+player.height
您可以尝试像这样的库。它处理从碰撞检测到重力的一切


查看它的演示。

我无法加载游戏,这是一个相当广泛的问题,但在设计这样的游戏时,使用传统的面向对象方法会让您受益匪浅。这样,每个物体(玩家和/或任何其他物体)都可以跟踪自己的速度和加速度,重力的计算应该非常简单。实际上,你只是将重力引起的恒定负加速度加到物体现有的加速度上,你可以跟踪玩家的
Y
位置,以确保他们不会落到0(地面)以下。。。为了模拟撞击地面,你可以反转它们的速度,这将导致玩家弹跳一点,重力最终将它们压下。我明白你这样说,而不是var
Floor=function(x,y){在这里插入东西
应该是
var StartButton=new Object()
并相应地添加变量?这真是太酷了,谢谢:)在玩过它之后,这正是我所需要的。