コード例 #1
0
        // Update is called once per frame
        private void LateUpdate()
        {
            if (this.worldSpaceTarget.Target == null)
            {
                return;
            }

            Vector3 targetViewportPos = this.worldSpaceTarget.ScreenPosition;

            if (this.Clamp)
            {
                var screenSize = new Vector2(Screen.width, Screen.height);

                // Clamp to screen rect
                if (Mathf.Approximately(this.Radius, 0.0f))
                {
                    targetViewportPos = Vector3Ex.Clamp(targetViewportPos, this.ClampOffset, screenSize - this.ClampOffset);
                }
                // Clamp to screen circle
                else
                {
                    targetViewportPos = MathEx.ClampToCircle(Vector2.one * 0.5f, this.Radius, this.worldSpaceTarget.ViewportPosition);
                    targetViewportPos = new Vector3(targetViewportPos.x * Screen.width, targetViewportPos.y * Screen.height);
                }
            }

            this.transform.position = targetViewportPos;
        }