Particleと検索したり、Smokeとしたりするといい。
「unity」カテゴリーアーカイブ
アニメーションが再生されない問題
オブジェクトにアタッチしたアニメーションコンポーネントが再生されずに、ログに「… used by the Animation component ‘…’ must be marked as Legacy.」と表示されていた。解決策はアニメーションクリップをクリックして画面右上のものすごく小さいアイコンをクリックして、NormalからDebugに変更する。表示されたその中にAnimation Type項目があるので 2 から 1に変更する。2はたぶんMecanimの事で、1は前のLegacyのバージョンの事だと思う。
Unity、動的配列はListクラスを使う
http://gamesonytablet.blogspot.jp/2012/12/unity_8031.html
using System.Collections.Generic;をファイル冒頭に追記しないとジェネリックコレクションが使用できない。
Unity、FixedUpdateとUpdate関数の違い
FixedUpdateはAddForce関数など物理的な物を扱う時に使う。一定時間ごとに呼ばれる。この関数の中に記述してはいけないのは、例えばGetKeyButton関数。ボタン入力を必ず取得するとは限らないので。
使いたければUpdate関数の中に記述するべき。
モーションの逆再生を作成するには
例えば前歩きのモーションがあったとして、これを元にして後ろ歩きのモーションを作成するにはモーションビルダーを使う。作成の仕方は動画があるのでこれを参考にした。動画は
Iconia Tab A200用のドライバのインストール
Unity、Tagのついたオブジェクトをスクリプトから取得する際、Cloneオブジェクトを取得してしまう問題
GameObject.FindGameObjectWithTag関数の戻り値にインスタンス化されておらず、HierarchyにもないPrefabを取得してしまう問題。
解決策はそのTagの付加されたすべてを取得して、その中のものがHierarchyに存在するかどうかを調べ、存在していればそれを選択する。
GameObject gameObject; GameObject[] gameObjects = GameObject.FindGameObjectsWithTag("HogeHoge"); foreach(GameObject temp in gameObjects){ if(temp.activeInHierarchy){ gameObject = temp; break; } }
上記のスクリプトのactiveInHierarchyがtrueでもCloneオブジェクトを何故か拾うので、上記のは使えない。かわりにオブジェクトの名前にCloneという文字列を含んでいるか含んでいないかで判断する。すると以下のようになる。
GameObject gameObject; GameObject[] gameObjects = GameObject.FindGameObjectsWithTag("HogeHoge"); foreach(GameObject temp in gameObjects){ if(temp.name.IndexOf("Clone") == -1){ gameObject = temp; break; } }
transform.forwardとtransform.rotation * Vector3.forwardについて
transform.forwardの値はtransform.rotation * Vector3.forwardと等しい。
それならtransform.rotation * Vector3.forwardの使い道は文が長くなるので使わないが、ちょっと式を変更すると使う場面がある。例えばQuaternionの値だけ分かっている時、このローカル座標のz軸をワールド座標に変換したいのなら
Quaternion rotation = Quaternion.Euler(0, 45, 0); Vector3 position = rotation * Vector3.forward;
と出来る。
Unity、Atan2とは
Unity、自キャラを傾かせずに敵キャラへ向かせるには
transform.LookAt関数を使えば自キャラを敵キャラへ簡単に向かせられるが、敵キャラが自キャラより高い場所にいる時は、自キャラが傾いてしまう。傾かないようにするには以下のようにする
using UnityEngine; using System.Collections; public class MyTestLookRotation : MonoBehaviour { public Transform target; void Update() { Vector3 relativePos = target.position - transform.position; relativePos.y = 0; Quaternion rotation = Quaternion.LookRotation(relativePos); transform.rotation = rotation; } }