###前提・実現したいこと
下記のコードの動作を維持しながら、表示がちゃんと表示されるようになって欲しい。
###発生している問題・エラーメッセージ
キャラクターがダメージを受けてHPが減る分には問題ないのですが、回復アイテムを導入した所
表示されていない数字(DebugLog等でHitPointを表示)は満タンになっているものの、実際に画面に表示されているHPは9足りなくなります。
HP:800/900
↓【回復アイテム取得 (回復量:100)】
HP:891/900
この時の【HitPoint】は900ですが、【displayHitPoint】は891です。
###該当のソースコード
void Update()
{
//【HP関係】
//現在の体力が表示用の体力と重なっていれば、現在の体力になるまで加減算する
if (displayHitPoint != HitPoint)
displayHitPoint = (int)Mathf.Lerp(displayHitPoint, HitPoint, 0.1f);
//最大体力と体力をUI Textにお表示する HpText.text = string.Format("{0:000}/{1:000}", displayHitPoint, HitPointMax, 0.1f); //HPがゼロの以下の時、表示がマイナスにならないようにする、及び死亡時処理 if (HitPoint < 0) { HitPoint = 0; isDead = true; GameDirector.Pdead = true; } //ゲージの長さを体力の割合に合わせて伸縮させる HPgaugeImage.transform.localScale = new Vector3(percentageArmorpoint, 1, 1);
}
###試したこと
本来floatで使うものを、【(int)Mathf.Lerp】このように使っているからだと思います。
displayHitPoint = (int)Mathf.Lerp(displayHitPoint, HitPoint, 【0.1f】);
この【0.1f】部分の数値が大きくなればなるほど、HPの誤差は小さくなりますが、その分HPゲージの伸縮のスピードが早くなりすぎてアニメーションしているのを感じられなくなります。【1f】にすると、アニメーションはしませんが、表示はちゃんとします。また、LeapをClampにしても動作はしますがアニメーションは指定内容に見えます。
###補足情報(言語/FW/ツール等のバージョンなど)
【環境】
Unity5.6.1f1 personal
win10
MicrosoftVisualStudio
int型をfloat型に変換して、1f=最大HPみたいな事をすれば良いのでしょうか?
知識不足すぎてナニをどうすればわかりません。
ご存じの方何卒よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー