昨日の移動床の続き。
移動床に乗ったプレイヤーに、慣性の法則なんて便利なものは働かないので、プレイヤーが滑り落ちてしまう。
今日はこの修正を行おう。
昨日記載した通り、修正方法はざっくり3通りある。
①移動床に摩擦をかけて、プレイヤーがひこずられる様にする。
②プレイヤーを移動床と親子関係にしてしまう。
③移動床に乗っている時は、移動床の速度を常にプレイヤーの速度に足してやる。
結局、れーさん方式の3で解決させる事にした。
れーさんの方式のコードをそのまま持ってきたいところだけど、接地判定の方法が、れーさんのコードは、子オブジェクトのcolliderで判定させているのに対して、自分のコードは、しまづさん方式のLinecastを足元に飛ばすやり方。
なので、そのままでは、使えない。
いまの自分のコードでの接地判定は、Linecastの結果をそのままboolとして返している。
まずこれを変更し、一旦、設定判定メソッド内でRaycastHit2Dで受け取る様にした。
このRaycastHit2D、bool判定にも使えるし、collider情報も格納してくれるという、なんとも便利なもの。
Linecastは移動床を対象にしているので、RaycastHit2Dの結果がtrueなら、プレイヤーの足元には移動床があるということになり、移動床のオブジェクトがRaycastHit2Dに格納されている。
そこからスクリプトを取り出し、移動床のスクリプトにある速度提供メソッド(GetVelocity)を実行してやれば、移動床の速度をpublic変数のadd Velocityに取得できる。
あとは、プレイヤーの速度にaddVelocityを足してやれば良い。
このaddVelocityは毎フレーム初期化させているので、移動床から降りればあとは普通に移動できる仕組み。
結果はこんな感じ。
明日は落ちる床と、そろそろ敵を倒せる様にしようかな😁