Unityでゲーム作るぞ

Unityでゲーム制作できるようになるまでのリアルドキュメント

三十七日目ーゴブリンの同時死亡、腰布消しに対応


腰布が残っていたのは、肌部分と布部分で使っているテクスチャーが違うため。
materialとしていた所を、material”s”にして配列で取得、全て透明度を上げてやる。すなわちforとmaterials.lengthでアクセス。

http://docs-jp.unity3d.com/Documentation/ScriptReference/SkinnedMeshRenderer.html
こういった仕様は公式ドキュメントに明るいので読もう。日本語訳も大体されている

複数を同時に倒した時にうまくいかないのはコルーチンを疑ったが全然関係なかった。
GameObject.Find("U_Char_0")
としていたのだが、
これは"存在する全てのオブジェクトの中から、U_Chara_0という名前のものを探す"である。
ゴブリンは何体も出るし、それぞれ、その中にU_Chara_0を持っている。結果、幾つも存在している。

これにより例えば3番めに登場した敵を倒しても、取得されるのは1番めという事になり、バグ。(だから一体の時は問題なかった)

結論的には
transform.Find("U_Char_0");
で、それぞれのゴブリンの中にある、U_Charを探す事になる。
http://blog.be-style.jpn.com/article/57118009.html
を参照した。

だがここでもう一つ問題、GameObject(クラス)の時は絶対座標だが、transform(オブジェクト)のFindは相対的となり…、要は一階層下までしか潜らないらしく。
という訳で
transform.Find("U_Char/U_Char_0");
と、しっかり階層構造を示してアクセスする必要があった。

http://www.cho-design-lab.com/2013/08/21/unity-find-object-by-name/
ここを参照した。


腰布が透明になるのは良いんだけど、本体を消す時に一瞬黒くなって目立つんだよなあ…何故に…