/// <summary> /// 対象ベクトルに向かっての配置 /// </summary> public void SeeFollow(Vector3 euler, Vector3 target, float timer = DEFAULT_TIMER) { if (toEuler != euler || DoUpdate) { fromEuler = VecComp.AbsCompFloor(followerObject.transform.eulerAngles); toEuler = VecComp.EulerShortest(fromEuler, euler); if (timer <= 0f) { if (AngularVelocityOfDegree != 0f) { timer = Vector3.Distance(fromEuler, toEuler) / AngularVelocityOfDegree; } else { timer = Time.deltaTime; } } countTimer = Time.deltaTime; maxTimer = timer; if (maxTimer <= 0f) { maxTimer = SetOtherMaxTimer; } } if (maxTimer > 0f) { float ratio = countTimer / maxTimer; if (ratio >= 1f) { ratio = 1f; maxTimer = 0f; } Vector3 nextEuler = Vector3.Lerp(fromEuler, toEuler, ratio); target += RelativeOffset; Transform tf = followerObject.transform; if (mode2D) { nextEuler.x = 0; nextEuler.y = 0; } tf.eulerAngles = nextEuler; Vector3 toVector = target + -tf.forward * Distance; if (DistanceToSize && followerCamera.orthographic) { followerCamera.orthographicSize = Distance; } tf.position = toVector; } DoUpdate = false; }