2/5ライフ増減システムも点滅システムも出来たのであとはHUDのハート増減処理だけですね。正確に言うとノックバックも実装しなきゃならんのですが、これはモンスターの移動処理実装後に回しましょう。今回はライフの数値(INT型)を見て操作するタイプにしていこうと思います。ハート自体は空・半・全と三段階使います。上記の通りint型で数値の6ということになりますね。気を付けてほしいのが、1つ目の全状態と2つ目の空状態は数値が同じになります。0になるとゲームオーバーという形にしましょう。ハートのプレハブを作るために一旦ハートオブジェクトを1つにしましょう。Life_ManagerはUpdateで常にプレイヤーのHPを監視します。ライフ増減時に前回と現在のHPを比較するために「_beforeLife」変数を作っておきます。}}updateで呼び出してる「_checkPlayerLife()」を見ていきましょう。プレイヤーのライフを取得します。最初にライフが0でないかをチェックし、0であればゲームオーバー処理を呼び出すようにしましょう。(未実装)ライフが0でなければ「_beforeLife」と現在のライフを比べて、増えたか減ったかを確認します。次に現在LIFEがどのライフオブジェクトに該当するかを計算して調べます。私の頭が悪くスマートな計算式が導き出せなかったので、もっと楽に判定できる方法があると思うのですが、とりあえず理想的な動きをしてくれたので、このやり方でも間違いではないなと判断し実装しています。現在値を最大値(今回は20固定)で割り、次に計算しやすいように10倍します。この時float型にキャストしていることに気を付けてください。割ると端数が出てfloatにしておかないと計算が狂います。その後、端数を切り上げ(Math.Ceiling()で切り上げ)すると該当するハートオブジェクトの1つ次のindexになります。配列のindexはINT型じゃないとだめなのでここで念のためにINT型にキャストしておきましょう。該当するオブジェクトのindexを取得できたのでそのindexを使って、ハートを処理します。10.0f);ここの計算式を詳しく解説するとライフの実数値は40ですが、HUDの見た目的には20として0.5ずつで計算していくので、20(ライフ最大値)19.5(1ダメージ食らった場合)19(2ダメージ食らった場合)etc...と0.5刻みになるようにしています。ハート1つめの全とハート2つ目の空は同じ数値といいましたね。以下を再び載せておきます。0)」で割り切れるのか端数が出るのかの2択に絞ることができます。数値が「19」の時はハートが19個目が全状態なのとハートが20個目が空状態の2つ状態を判断できるわけです。考えれば考えるほどなんか無駄なことをしているなって思ってきたので考えるのを辞めます(笑)とりあえず私としては理想の動きになってくれたのでこのまま進めます。答えが1つじゃないのがプログラミングです(言い訳)頭が良い方はプログラミングの訓練としてここの処理を改善してみてください。ハートオブジェクトにメソッドを作成ハートを処理する計算が出来上がったので、その後に呼び出す処理を作ります。ハートのスプライトを変更するメソッドを子オブジェクトのスクリプトである「Life_Children」に作成します。自身のスプライトレンダラーを取得して親側から子で用意したスクリプトを呼び出して呼び出された内容により自身のスプライトを変更するだけです。増えたときはFullとHalfの関数を呼び出す。減ったときはLessとHalfの関数を呼び出す。子オブジェクトの取得する順番は予測しづらい最後に子オブジェクトをまとめて取得しようとすると、ヒエラルキー上で名前に番号を振ろうが生成した順番で並べようが取得時にぐちゃぐちゃになる可能性がかなり高いです。いうのもおそらくはUnity側で内部番号を都合よく振り分けている感じがします。開発者側が意図しない順番でオブジェクトを取得されてしまいます。逆に内部番号が振り分けられているということは1度順番がわかってしまえば基本的にオブジェクトを削除しない限りは変動しないということです。取得した準にハートの座標を設定してやればいいわけです。n個目は(x,y):(0+8n,0)...という感じで順番に座標を変更するようにしてやればヒエラルキー上はまったく気にしなくてもOKです。今回は10個目(ハート的には11個目)から次の段になっているので、Unityではy座標が上に行くほど+なので添え字が10になったらy座標を-8してxを0から設定してやれば次の行から設置されていくというわけです。スクリプトにすると以下のような処理になります。}pxとpyの計算は三項演算子になっているのでしっかりとみてください。わかりやすくifでちゃんと書いたほうが見易さ的には上ですが、こういう時は三項演算子を使ったほうがスッキリかけていいなと個人的には思いました。他人にコードを見せる場合は三項演算子はあまり使うべきではないと思いますね。(反省なし)余談ですが都合のいいことにオブジェクトをループで取得したら、Unity側が自動でヒエラルキーを並べ替えしてくれます。(バージョンによってはしないかも?)一度実行してから再び名前を付ければ視覚的にもちゃんと順番通りになるので良い感じです。2020次回はノックバックダメージを実装するために少しモンスターの動きを作っていきましょう。11/26なおキーヌ某なんでも屋企業のシステム管理者を務めつつリーマンからの解放を目指して奮闘中。FE&BE開発・Webデザイン・DTPデザイン・SEO・Webライティング等一人である程度のクオリティで大体のことが出来るなんでもエンジニア。小学校の夢でもあったゲームクリエイターを目指して2019年から少しずつ積み上げています。ゲーム作りの参考書TOP。