前回記事ではプレイヤーキャラクターの移動とジャンプの簡単な実装例を紹介しました。
実は前回記事の状態では、地面ではなく、垂直な壁に接していてもジャンプできてしまいます。
これを面白いと考えるか、不自然と考えるかは人それぞれかと思いますが、今回は壁の側面に接してもジャンプできないようにする設定を紹介します。2Dプロジェクト用。
考え方は下図のとおり。
プレイヤーキャラクターの移動、向きを変える、接地判定などを行っています。今回、接地判定を OnCollisionExter / OnCollisionExit から OnTriggerEnter / OnTriggerExit に変更することで、トリガーを使う処理に変えています。(66行目、72行目 参照)
実際にジャンプ処理を行う PlayerJump2D のスクリプトは前回記事から変更なし。
今回は以上です。感想・質問・要望等、お待ちしております (´▽`)
(この記事の使用環境: Unity2018.1.0f2 (.NET4.x Equivalent)、Windows10)
実は前回記事の状態では、地面ではなく、垂直な壁に接していてもジャンプできてしまいます。
これを面白いと考えるか、不自然と考えるかは人それぞれかと思いますが、今回は壁の側面に接してもジャンプできないようにする設定を紹介します。2Dプロジェクト用。
動画
動画はこちら。壁の側面に当たったときにキーを押してもジャンプできなくなっています。Unityエディターでの設定
足場のオブジェクトに、BoxCollider2D を2つアタッチしています。- 1つめは通常の足場になるよう、そのまま。
- 2つめはスクリプトで接地判定をするためのもので、Is Trigger にチェックを入れて、トリガーにしています。トリガーにすると他のコライダーとぶつかっても物理的には影響せず(そのまますり抜ける)が、衝突が起こった情報のみ検出することができます。少し位置・大きさをずらして設置します。
考え方は下図のとおり。
スクリプト
スクリプトは前回記事で紹介した PlayerWalk2D を少し改変したものを紹介します。PlayerWalk2D
プレイヤーキャラクターの移動、向きを変える、接地判定などを行っています。今回、接地判定を OnCollisionExter / OnCollisionExit から OnTriggerEnter / OnTriggerExit に変更することで、トリガーを使う処理に変えています。(66行目、72行目 参照)
PlayerJump2D(前回記事から変更なし)
実際にジャンプ処理を行う PlayerJump2D のスクリプトは前回記事から変更なし。
足場のオブジェクトをプレハブ化しておく
今回作った足場のオブジェクトをプレハブ化しておけば、プロジェクト内で繰り返し使用できるので便利です。毎回コライダーとトリガーの設定をするのは面倒ですからね。今回は以上です。感想・質問・要望等、お待ちしております (´▽`)
(この記事の使用環境: Unity2018.1.0f2 (.NET4.x Equivalent)、Windows10)
コメント