Unity(ユニティ)のゲージなどを画面の一部に固定する方法
HPなどのゲージを画面に固定する方法が最初わからなくて結構悩んだりしたんですが、よく考えたら簡単だったのでメモっときます。
まず、ゲージ
http://kdey.cocolog-nifty.com/blog/2011/08/hp-0648.html
このを参考にしました。(丸投げ)
shaderを Unilit/Transparent Cutout でも似たような動きしてくれてます。
固定方法ですが、初心者なんであんまり洗礼されたものではありませんが、動くんでいいんです。
まずGameObjectからCreate Emptyを選択してGameObjectを作ります。(kameraという名にするとします)
ちなみにInspectorに位置情報がでてますがいじらなくていいです。
これが親になります。
kameraの下にカメラもゲージもこのドラックドロップで移動させて
カメラの移動させるときはGameObjectのkameraを移動させることでカメラを動かしてもついてきます。
↓設定するとこんな感じになります(右下のAlpha cutoff のつまみを移動させるとゲージが減ったり増えたりするのがわかります)

この方法の問題点はディスプレイの大きさに寄よって見切れてしまったりすることです。
これは画面サイズを取得してlocalpositonなどで調整するのが良いんじゃないでしょうか?
画面サイズの変更のやり方参考元
http://hideapp.cocolog-nifty.com/blog/2012/06/unity-1a83.html
Unityメモ 孫要素の指定の仕方と親子プレハブを生成した場合の要素名指定の仕方
Unityでゲーム作ってまして詰まった・悩んだ部分を書いとこうかと思います。(自分が初心者なので初心者向け)
今のところアクションですが、いずれTCG的なものも作りたいです。
さて本題
Unityでオブジェクトの子要素を取得するやり方はわりと書いていますが、孫要素には
かいてなかったのでメモしときます。
GameObject ob = gameObject.transform.FindChild("obj_child/obj_descendent").gameObject
簡単ですね。スラッシュで区切ればいいだけです。(この例の場合自身を参照しています)
で、なぜここで詰まったかというと
グループ化したオブジェクトをInstantiateで生成していたので(プレハブ化して)
FindChild("obj_child/obj_descendent") //生成した親子プレハブを指定する場合間違い
が
FindChild("obj_child(Clone)/obj_descendent") //こっちが正解
になっるべきだったのです。
親子要素をプレハブ化した場合は親の部分だけ(Clone)がつくみたいなのです。
途中で「あ生成したら(Clone)付くっけ」と気づいて
FindChild("obj_child(Clone)/obj_descendent(Clone)")
したので詰まったのでした。(つまり上記は間違い)
凡ミスですが、結構悩んだのでメモっときます。