コガネブログ

平日更新を目標にUnityやC#などのゲーム開発アレコレを書いていきます

【Unity】transform.LookAtをGameObject型のtransformプロパティを介さずに使用できるようにする拡張メソッド

using UnityEngine;

/// <summary>
/// GameObject 型の拡張メソッドを管理するクラス
/// </summary>
public static class GameObjectExtensions
{
    /// <summary>
    /// 向きを変更します
    /// </summary>
    public static void LookAt(this GameObject self, GameObject target)
    {
        self.transform.LookAt(target.transform);
    }
    
    /// <summary>
    /// 向きを変更します
    /// </summary>
    public static void LookAt(this GameObject self, Transform target)
    {
        self.transform.LookAt(target);
    }
    
    /// <summary>
    /// 向きを変更します
    /// </summary>
    public static void LookAt(this GameObject self, Vector3 worldPosition)
    {
        self.transform.LookAt(worldPosition);
    }
    
    /// <summary>
    /// 向きを変更します
    /// </summary>
    public static void LookAt(this GameObject self, GameObject target, Vector3 worldUp)
    {
        self.transform.LookAt(target.transform, worldUp);
    }
    
    /// <summary>
    /// 向きを変更します
    /// </summary>
    public static void LookAt(this GameObject self, Transform target, Vector3 worldUp)
    {
        self.transform.LookAt(target, worldUp);
    }
    
    /// <summary>
    /// 向きを変更します
    /// </summary>
    public static void LookAt(this GameObject self, Vector3 worldPosition, Vector3 worldUp)
    {
        self.transform.LookAt(worldPosition, worldUp);
    }
}
//gameObject.transform.LookAt(target);
gameObject.LookAt(target);