1

私はAndroid開発に不慣れで、動作するAndroidアプリを取得する最初の試みとして、libGDXとbox2dを使用して2D横スクロールゲーム(マリオにいくらか似ています)を作成しようとしています。

私はこのチュートリアルを見つけて実行しました:Libgdx Box2dTiledMaps。私が従った(そしていくつかの変更を加えた)そして私はそれを自分のタイルのセットで稼働させました。私が抱えている問題は、私のボックス(この例ではジャンパーと呼ばれます)が傾斜したタイルの底に達すると、単に動きを停止することです。パート2の例をダウンロードし、collisions.txtファイルを変更し、12行目を0x31,31x0に変更して最初の傾斜まで歩くと、問題が発生するはずです(この例では傾斜した衝突を処理しようとはしていません)。デバッグレンダリングがオンになっているので、衝突境界が正しいと確信しており、正しい場所でそれらを見ることができます。

私がインターネットで行ってきた調査から、そしてコードをいじってみることから、いくつかの解決策があるかもしれません:

  1. ボックスオブジェクトの重心を下に変更し、固定回転をfalse(jumper.sexFixedRotation(false))に設定して、ボックスが傾斜に対して角度を付け、線形インパルスが平面に対して適用されるようにしました。私はこれを機能させることができませんでした。
  2. ボックスが動いていないのに入力が押されている場合は、水平方向と垂直方向の速度を検出し、異なる線形インパルスを適用してみました。

        if (moveRight && !moveLeft) {
    
          if(!(Math.abs(jumper.getLinearVelocity().x) > 0.0f) && !(Math.abs(jumper.getLinearVelocity().y) > 0.00f)) {
            jumper.applyLinearImpulse(new Vector2(0.0f, 0.09f), jumper.getWorldCenter());
        } else {
            jumper.applyLinearImpulse(new Vector2(0.05f, 0.0f), jumper.getWorldCenter());
        }
        if (!jumperFacingRight) {
            jumperSprite.flip(true, false);
            jumperFacingRight = true;
        }
    }
    

    これは機能しますが、信じられないほど遅くてびくびくします(ハッキーは言うまでもありません!)。

私が見逃している/考えていないことがあると確信しており、どんな提案も大歓迎です!

4

0 に答える 0