コード例 #1
0
        void UpdateTarget(PathMagicAnimator pathMagicAnimator)
        {
            Vector3    position = Vector3.zero;
            Quaternion rotation = Quaternion.identity;
            float      velocity = 1.0f;
            int        waypoint = 0;

            if (pathMagicAnimator.pathMagic.presampledPath)
            {
                pathMagicAnimator.pathMagic.sampledPositionAndRotationAndVelocityAndWaypointAtPos(pathMagicAnimator.currentPos, out position, out rotation, out velocity, out waypoint);
            }
            else
            {
                position = pathMagicAnimator.pathMagic.computePositionAtPos(pathMagicAnimator.currentPos);
                rotation = pathMagicAnimator.pathMagic.computeRotationAtPos(pathMagicAnimator.currentPos);
                velocity = pathMagicAnimator.pathMagic.computeVelocityAtPos(pathMagicAnimator.currentPos);
                waypoint = pathMagicAnimator.pathMagic.GetWaypointFromPos(pathMagicAnimator.currentPos);
            }

            if (pathMagicAnimator.globalFollowPath)
            {
                // Global follow path override
                rotation = pathMagicAnimator.pathMagic.GetFaceForwardForPos(pathMagicAnimator.currentPos);
            }
            else if (pathMagicAnimator.globalLookAt != null)
            {
                // Global look at override
                rotation = Quaternion.LookRotation(pathMagicAnimator.pathMagic.transform.InverseTransformPoint(pathMagicAnimator.globalLookAt.position) - position);
            }

            pathMagicAnimator.UpdateTarget(position, rotation);
        }