座標と回転などについて備忘録
自キャラの位置を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); }