1

つまり、基本的に私が持っているのはcreateBoxBoundary、プレーヤーの位置が特定の制限内にある場合に境界変数を true に設定する という関数です。かなり簡単です。ただし、メインのゲーム ループでこの関数を複数回呼び出すと、最後に呼び出された関数のみが機能します。以下は私のコードのサンプルです

//It should be noted the player deminsions are 40x80
function createBoxBoundary(x,y,width,height){
    //right boundaries
    if(playerXPos + 40 == x && playerYPos + 80 >= y && playerYPos < y + height){
        boundaryRight = true;
    } else{boundaryRight = false;}

    //bottom boundaries
    if(playerYPos == y + height && playerXPos + 40 >= x && playerXPos <= x + width){
        boundaryTop = true;
    } else{boundaryTop = false;}

    //left boundaries
    if(playerXPos == x + width && playerYPos + 80 >= y && playerYPos <= y + height){
        boundaryLeft = true;
    } else{boundaryLeft = false;}

    //bottom boundaries
    if(playerYPos + 80 == y && playerXPos + 40 >= x && playerXPos < x + width){
        boundaryBottom = true;
    } else{boundaryBottom = false;}
}

また、完全なゲーム コードでフィドルを設定しました。また、javascript で衝突/境界を行うためのより良い方法についてアドバイスがあれば、私もそれを受け入れます。どんな助けでも大歓迎です!

4

1 に答える 1

1

問題はboundaryRight、2番目の境界の値を確認する前に、がすでにtrueに設定されているかどうかを確認していないことです。

このようなものが機能するはずです:

boundaryRight = ( boundaryRight || ( playerXPos + 40 == x && playerYPos + 80 >= y && playerYPos < y + height );

また、このjsFiddleで他のいくつかの調整を行い、境界などを定義する柔軟性を追加しました。また、複数の方向に移動する機能を追加します。

http://jsfiddle.net/petersendidit/QdCMG/7/

于 2013-02-18T00:27:36.903 に答える