HPバーにダメージを反映させる【unity】

公開日: 2014/10/13 unity



敵キャラの頭上にHPバーを付けたので攻撃ヒット時にバーを短くする処理を加えてみた


頭上にHPバー付ける方法を際にググッて調べてたのですがアセットのNUGIを使った紹介が多く・・・
NUGI以外だと初心者の僕には目眩を起こしそうな方法か、シンプルなんだけどよくわからずとかで結局手探りで・・・・

まあ、結局は僕レベルの技術力と性格だと、ひとつずつ触って理解していくしかないんですよね
いきなり完成したコードをコピペして弄んでもよくわからずに挫折しちゃうんです・・・・

というわけで、とりあえずバーの色とする赤で1pxの画像を用意
その画像のtexture TypeをSpriteにしてPivotはLeft



Spriteオブジェクト作ってアタッチしてScaleで横に引き伸ばしてプレハブ化


//敵オブジェクト呼び出し用スクリプト
敵キャラのプレハブをオブジェクトにする時一緒にInstantiateして子オブジェクトに入れる
スクリプトからtransformで位置を調整、うーんよくわからんソースで・・
//Resourcesフォルダからプレハブ情報の取得
GameObject Enemy = (GameObject)Resources.Load ("敵プレハブ名");
GameObject HP_Bar = (GameObject)Resources.Load ("HPバープレハブ名");

//プレハブをオブジェクトにInstantiate
GameObject Oya = (GameObject)Instantiate(Enemy,new Vector3(0,0,0),Quaternion.identity);
GameObject Ko = (GameObject)Instantiate(HP_Bar,new Vector3(0,0,0),Quaternion.identity);

//親子関係にする
Ko.transform.parent = Oya.transform;

//位置の調整(適当)
Ko.transform.localPosition = new Vector3( -8.9f, BoxCollider.size.y * 0.5f, 0);


//敵オブジェクト
HPバーオブジェクトを取得、子なのでtransform.FindChild().gameObject
ダメージを受けた際に最大HPと残りHPで割合の数値を計算
計算した数値をHPバーオブジェクトのScaleに当てる
public void damage (float damage) {
hp = hp - damage;
par = hp / max_hp;
Hp_bar.transform.localScale = new Vector3(Hp_bar.transform.localScale.x * par, Hp_bar.transform.localScale.y, Hp_bar.transform.localScale.z);
}

という流れで一応形にはなったけど、本来どうやるべきか・・・・うーん
  • ?±??G???g???[?d????u?b?N?}?[?N???A

0 件のコメント :

コメントを投稿