Пример #1
0
        /// <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;
        }