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

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

サイドビューアクションゲームを作ろう(9):UnityActionでHPバーを制御する。

敵を倒せる様になったので、今度はプレイヤーも倒されるようにした。

Sliderを使ったHPバーはシューティングゲームで作成した事があるので、今回はSprite Rendererを使った方法。

基本的な方法はSliderと同じ。Sprite Rendererはlocalscaleを変化させてバーの増減を表す。

作ってみた感じ、自分としては、Sprite Rendererの方が扱いやすく感じた。

 

さらに、今回は以前から実験をしようと残課題にしていた、Unity Actionを実装してみた。

HPバーの更新をUpdateメソッドから切り離すための実装である。

 

プレイヤー側のスクリプト(今回の話題に関係ない箇所は省略)

次にHPバー側のスクリプト

 

プレイヤー側のスクリプトにUnityActionでイベントOnUpdateHPメソッドを設定し、

そこにHPバー側から、SetPlayerHPBarメソッドを追加している。

プレイヤー側はHPに変化が発生した時点で、MAX HPに対する今のHPの割合(PlayerHPrate)を算出して、OnUpdateHPに渡している。

ここで、ちょっと忘れていたのが、int変数を使った割り算で、結果が少数を含む場合、その結果をそのままfloat型に格納すると、少数部分が切り捨てられるということ。

playerHPrate=PlayerHP/PlayerMaxHP;

今回の場合、MAX HPに対する今のHPの割合は%なので、算定結果は必ず1以下になり、それをそのままfloat型変数に格納すると、格納された値は0になってしまう。

 

それを防ぐためには、int型をfloat型として明示させる必要がある。

playerHPrate=(float)PlayerHP/(float)PlayerMaxHP;

これで、正しい%が格納される。

 

結果は、こんな感じ。ついにプレイヤーが倒される様になった。

今はその後の処理を作っていないので、倒された後も引き続き攻撃されるという、地獄絵図な様😅になっているので、これは明日以降修正しなくては🤣

www.youtube.com