ゲーム制作勉強中!あこがれだったプログラマーに今からなろう!

昔、あこがれていたプログラマー。今からでも勉強してみようと思い立ち、チャレンジ開始! 勉強メモや、悪戦苦闘な日々の記録です。

サイドビューアクションゲームを作ろう(7):移動床(修正後)

昨日の移動床の続き。

移動床に乗ったプレイヤーに、慣性の法則なんて便利なものは働かないので、プレイヤーが滑り落ちてしまう。

今日はこの修正を行おう。

昨日記載した通り、修正方法はざっくり3通りある。

 

①移動床に摩擦をかけて、プレイヤーがひこずられる様にする。

②プレイヤーを移動床と親子関係にしてしまう。

③移動床に乗っている時は、移動床の速度を常にプレイヤーの速度に足してやる。

 

結局、れーさん方式の3で解決させる事にした。

れーさんの方式のコードをそのまま持ってきたいところだけど、接地判定の方法が、れーさんのコードは、子オブジェクトのcolliderで判定させているのに対して、自分のコードは、しまづさん方式のLinecastを足元に飛ばすやり方。

なので、そのままでは、使えない。

いまの自分のコードでの接地判定は、Linecastの結果をそのままboolとして返している。

まずこれを変更し、一旦、設定判定メソッド内でRaycastHit2Dで受け取る様にした。

 

 

このRaycastHit2D、bool判定にも使えるし、collider情報も格納してくれるという、なんとも便利なもの。

Linecastは移動床を対象にしているので、RaycastHit2Dの結果がtrueなら、プレイヤーの足元には移動床があるということになり、移動床のオブジェクトがRaycastHit2Dに格納されている。

そこからスクリプトを取り出し、移動床のスクリプトにある速度提供メソッド(GetVelocity)を実行してやれば、移動床の速度をpublic変数のadd Velocityに取得できる。

あとは、プレイヤーの速度にaddVelocityを足してやれば良い。

このaddVelocityは毎フレーム初期化させているので、移動床から降りればあとは普通に移動できる仕組み。

 

結果はこんな感じ。

www.youtube.com

明日は落ちる床と、そろそろ敵を倒せる様にしようかな😁