前回に引き続いて Unify Community からビルボード化に関する Tips の翻訳を紹介する:
http://wiki.unity3d.com/index.php/Tip_of_the_day
Nov 2012
ビルボード化
Tip #40 - Billboarding
次のコードスニペットはオブジェクトのビルボード化に使用します。スクリプトをオブジェクトの上にドロップすることで、カメラの方へ自動的に向きます。
public class CameraBillboard : MonoBehaviour
{
// ゲームオブジェクトをビルボード化させる対象のカメラ
public Camera m_Camera;
// true の場合ゲームオブジェクトはクリッピング平面のカメラの前に配置されます。
public bool PositionInFrontOfCamera;
// PositionInFrontOfCamera が true の場合のオブジェクトのオフセット幅
public float Offset = 0.001f;
void Awake()
{
// カメラが指定されてない場合はメインカメラを使用
if (m_Camera == null) m_Camera = Camera.main;
}
void Update()
{
// カメラの forward ベクトルを取得して正規化
var vec = m_Camera.transform.forward;
vec.Normalize();
// ゲームオブジェクトのポジションをカメラのクリッピング平面のすぐ内側にセットしてカメラビューをブロックするようにする
if (this.PositionInFrontOfCamera) this.transform.position = m_Camera.transform.position + (vec * (m_Camera.nearClipPlane + this.Offset));
// ゲームオブジェクトの向きがカメラの方へ向くようにする
this.transform.LookAt(this.transform.position + m_Camera.transform.rotation * Vector3.back, m_Camera.transform.rotation * Vector3.up);
}
}
-----
短いコードスニペットを使いこなして基本的なテクニックを身につけようぜ!