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

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

3Dアクションゲームを作ろう(2)

昨日に引き続き、流星咲斗さんの【3Dアクションゲーム】作り方を勉強中。

今日は、
#4 『剣で攻撃する方法』
#5 『エフェクトで画面を華やかに!』
#6 『効果音で世界を彩る』
#7 『敵に追尾させる方法』

剣で攻撃する方法については、サイドビューアクションゲームである程度理解できているので、だいぶ楽😆
むしろ、3Dだと剣に直接colliderを設定できる分、実は2Dより判りやすいんじゃないかと思えたほど。

エフェクトのパーティクルシステムもサイドビューアクションゲームでちょこっと齧ったので、サクッと進める。
むしろ、あの時、この動画を見たかった😅

どうも、自前のはあまり良いものが作れなかったので、アセットストアでそれらしいのをダウンロードしてきて、それを使うことにした。
そっちの方がクオリティ高いしね🤣

敵がプレイヤーを検知する方法は色々あるけれど、ColliderのTriggerで検知させる方法。
Sphere ColliderやCapsule Colliderで敵の視野を設定できるのも楽。

サクサクとできたので、ついでにジャンプもさせてみたくなった。
【3Dアクションゲーム】のシリーズには残念ながらジャンプの実装はなかったけれど、要はサイドビューアクションゲームの時と同じ。
今回は接地判定はLinecastではなく、Box Colliderで接地判定用の空オブジェクト、Ground Checkerを作成する。

落下判定については、サイドビューアクションゲームではプレイヤーのRigidBody.VelocityのY軸がマイナスになったのを判定していたが、3Dマップだとちょっとした段差が多いので、これでは落下しまくる動作になり、不自然極まりない動きになってしまった。

そこで、Ground Checkerが地面と離れている状態を検知したタイミングでタイマーを動かし、ある程度の時間以上、地面と離れている状態が維持されたら落下状態と判定するようにした。

https://youtu.be/pWbh8atJB60:embed:cite:w480


これで、ちょっとした段差での落下程度では落下動作にならずに済むようになった。

ただ、3Dマップ特有の凸凹地面ではGround Checkerが上手く接地状態を検出できない場合があるので、これは残課題かな。

兎にも角にも、これでジャンプできるようになったので、明日は、【3Dアクションゲーム】のシリーズに沿ってHPの実装かな〜😆