unityで、動くゲームオブジェクトに追随するようなHPバーを作ったのですが、HPバーが減るたびに座標が少しずつずれてしまいます。
具体的にどのような仕様になっているかというと、縦長の長方形のHPバーがゲームオブジェクトの子オブジェクトで、HPバーが減っても底辺とゲームオブジェクトの相対位置が変わらないようなHPバーを作りました。
HPバーのスプライトは色のついた長方形の画像で、余白はなく画像全体が長方形を描画しています。
HPバーを減らす処理はlocalScaleの値を変更することで行います。
下がそのコードです。
C#
1public class Enemy_1 : MonoBehaviour 2{ 3 4 public int hp = 2; 5 public int max_hp = 2; 6 //HPゲージ 7 public GameObject enemy_hp_gauge; 8 //HPゲージの相対位置 9 public Vector3 enemy_hp_gauge_pos; 10 11 IEnumerator Start() 12 { 13 14 enemy_hp_gauge = transform.Find("enemy_hp_gauge").gameObject; 15 enemy_hp_gauge_pos = enemy_hp_gauge.transform.localPosition; 16 17 //処理。。。 18 } 19 20 void Update() 21 { 22 //縮める前のhpバーの高さ取得 23 float height_prev = enemy_hp_gauge.GetComponent<SpriteRenderer>().bounds.size.y; 24 //hpバーを縮める 25 enemy_hp_gauge.transform.localScale = new Vector3(1, (float)hp / max_hp, 1); 26 //hpバーを縮めた後のバーの高さ取得 27 float height_next = enemy_hp_gauge.GetComponent<SpriteRenderer>().bounds.size.y; 28 //バーの下部と親オブジェクトの相対位置が変わらないようにする 29 enemy_hp_gauge.transform.localPosition = new Vector3(0,(height_next-height_prev)/2.0f,0) + enemy_hp_gauge_pos; 30 //バーの相対位置を更新 31 enemy_hp_gauge_pos = enemy_hp_gauge.transform.localPosition; 32 } 33 34 //ダメージを食らったらhpを減らす処理 35
このような実装をしたのですが、HPバーが削れるたびに少しずつHPバーの底辺が下にずれていってしまいます。
これは何が原因なのでしょうか?教えてくださると助かります。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/19 05:43
2018/09/19 05:53
2018/09/19 08:31
2018/09/19 09:36
2018/09/20 11:48
2018/09/21 01:18