座標と回転などについて備忘録

自キャラの位置をmyPos、ターゲットの位置をtargetPosとしたとき

・自キャラとターゲットの距離

float d = Vector3.Distance(targetPos, myPos);

・自キャラとターゲットの中心

Vector3 centerPos = Vector3.Lerp(myPos, targetPos, 0.5f);

・自キャラからターゲットの方に向かう単位ベクトル

Vector3 toVector = (targetPos - myPos).normalized;

・自キャラからターゲットの方に向かうベクトルをy軸で90度回転

Vector3 toVector = (targetPos - myPos).normalized;
Vector3 rightVector = Quaternion.Euler(0, 90, 0) * toVector;

・自キャラのまわりをカメラが回転

float r = 2; // 半径
float speed = 3; // 速度
float h = 1; // 高さ
float time = 0;
void LateUpdate()
{
  time = time + Time.deltaTime * speed;
  Camera.main.transform.position = myPos + new Vector3(Mathf.Cos(time * Mathf.Deg2Rad) * r, h, Mathf.Sin(time * Mathf.Deg2Rad) * r);
  Camera.main.transform.LookAt(myPos);
}

・自キャラの後ろにカメラを追従させ、ターゲットの方を見る

float d = 2; // 後ろの距離
float h = 1; // 高さ

void LateUpdate()
{
  Vector3 toTarget = (targetPos - myPos).normalized;
  Camera.main.transform.position = myPos - (toTarget * d) + Vector3.up * h;
  Camera.main.transform.LookAt(targetPos);
}