0

私は単純な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();  
                } 
        });     
    } 
4

1 に答える 1

1

Box2D.jsのようなライブラリを試すことができます。衝突検出から重力まですべてを処理します。

それのデモをチェックしてください。

于 2012-07-05T02:28:54.570 に答える