Unityの忘備録とメモです('◇')ゞ

Unityでゲーム制作中に気づいたことや忘備録とかとか

【Unity】ローカル座標??transform.InverseTransformPointで苦戦したのでメモっとく

transform.InverseTransformPointは引数で渡したオブジェクトの相対的なローカルな座標がわかる関数らしいです。

???

相対的?いまいちわからん(^_-)-☆

たとえば、シーン上にPlayerとEnemyとその子であるEnemyChildがあったとして、

下記のようにスクリプトを作って
Playerにアタッチすると、

Playerの座標を原点としたEnemyChildの座標がわかるみたいですよ( ^^) _U~~

EnemyChildをPlayerの子にした場合のローカル座標とも言い換えられますね。たぶん。

public class Test : MonoBehaviour
{
  public GameObject enemyChild; //Enemyの子オブジェクト

  Vector3 enemyChildLocalPos; //Playerから見たEnemyChildeの座標を保存する変数

  void Update()
  {    
     EnemyChildSearch();
  }

  void EnemyChildSearch()
  {
      enemyChildLocalPos = transform.InverseTransformPoint(enemyChild.transform.position);
      
      Debug.Log(enemyChildLocalPos);
  }
}

実行してみると・・・

EnemyChildの座標がPlayerの位置からVector3(5, 1, 7)の位置にあるのが分かります。

PlayerのX座標を0から5ずらしてみると、、、

EnemyChildの座標も(0, 1, 7)と変化しています。

これはPlayerがEnemyChildの真正面に移動したため、X座標が0になったからですね(^_-)-☆

これ理解するのにかなり苦戦しました。。。

自分のプログラミングセンスねー( ;∀;)

おわり