今日は昨日作成したアイテムに効果を実装する。
昼間のうちに考えておいた構想は、ざっくりと、こんな感じ。
・ItemGeneratorをItemManagerに改名
・アイテムの効果の分類を作成
・ItemDataのScriptableObjectにアイテムの効果分類と効果数値を追加。
・アイテムを取得した時、ItemManagerのGetItemメソッドで処理するようにする。
・ダメージ表示の仕組みで、アイテム効果を表示させる。
ItemManagerの改名やら、ScriptableObjectの改造やらはサクッと完成したけれど、ダメージ表示の仕組みでアイテム効果を表示させるのが、何気に大改造だった。
今までダメージ表示はint変数を引数で受け取っていたが、これを変えるのが面倒だったので、ダメージ表示のスクリプト(DamageUI)に、色を変えてアイテムの効果を表示させるメソッド(SetItemText)を新たに追加し、これを呼び出す様にした。
今見てみれば、string型なのにitemValueって、なんかチグハグな名前だこと😅
そして、生成したアイテムには全て、Itemスクリプトがアタッチしてあり、ItemManagerからアイテム生成時に、アイテム効果と効果量を引数で渡すように作成した。
プレイヤーがアイテムを取得するタイミングで、Itemスクリプトは、ItemManagerのGetItemメソッドにアイテム効果と効果量を引数で返して、効果に応じた処理を実行させる。
ItemManagerのコードも載せようと思ったけど、コードをブログに記載する時に使用しているCarbonが、困った事に、50行を超えるあたりから表示が不安定になるみたいなので、断念😅
余談だけど、コードをブログに載せる方法も改めないとだめかもしれない。
結果としては、こんな感じ。
今はアイテムテストだから、スライムからポコポコと良いアイテムが出てるけど、最終的にはスライムからは、何も出ないか、金貨か経験値、レアアイテムで回復薬くらいにしないとな〜
使用アセット
Pixel Fantasy Caves
Hero Knight - Pixel Art
Slime Character
Pixel Potions (with Animation)
Animated 2D Coins
Bandits - Pixel Art
使用画像
七三ゆきのアトリエ:https://nanamiyuki.com/