HatenaPocketVer1.00のブロック判定記事でやったことの続きを実装します。今回はブロックを縦に並べても大丈夫なようにしてみましょう。縦に並べてもうまく処理させるには前回の判定記事で、うまくいかなかった理由を考えてみます。上に押し上げる判定や下に押し下げる判定を優先にしているがために、そちらの処理が適用されてしまって、空中に浮かんだり、ジャンプ時に引っかかってしまうわけですね。いうことは、押し出し先にブロックがある場合は上下の判定をしないようにすれば、引っかかりの現象は直りそうです。ブロックの周りにブロックがあるか調べるブロックの周りに(上下左右)にブロックがあるかどうかを判定しましょう。判定するには、二次元配列上の上(縦-1)下(縦+1)左(横-1)右(横+1)にブロックオブジェクトが存在するかを調べます。一応今回は4ブロック全部渡しますが、実際には左右は使いませんので上下の2ブロックだけでも問題ありません。それでは、調べた4方向のフラグをsinkingReviseメソッドに渡します。info);}}}}後はsinkingReviseでこのフラグを見て上下移動に制限をかけましょう。ブロック存在フラグを追加した後の判定処理それでは実際に押し戻しの処理に手を加えます。true;}//地上ではない場合は空中mv.isAir=!mv.isGround;}修正した部分は11行目の!info.upの条件と16行目の!info.bottomです。{他にもver1.00からの違いとして、右から突っ込んだときの判定と、左右から突っ込んできた場合に壁に当たったフラグを経てるように修正しました。壁に当たったフラグを制御するようになりましたので、敵キャラが壁を乗り越えてくる処理などを実装するのが簡単になりました。壁に当たったときはisWallフラグがtrueなのですぐに実装できますね。敵キャラのmoveメソッドを下記のように実装すると壁に当たった時にジャンプで乗り越えて来るようになります。{//空中だったら落下速度アップfallSpeed++;}//上下移動処理moveY(fallSpeed);//左右移動moveX(speed);}さて、それではVer1.10の記事は今回で最後にしたいと思いますので、完成ゲームのプレイ動画を乗っけて終わります。【JavaFX:横スクロールアクションゲーム】プレイヤーキャラ、敵キャラの表示と動きを実装キャラクタークラスを作成し、プレイヤーキャラを表示させます。本稿はJavaFXでmp3、wavファイルを再生する方法を紹介します。コメントをキャンセルメールアドレスが公開されることはありません。当サイトのプライバシーポリシーについてはこちらからご参照いただけます。