Пример #1
0
        IEnumerator GalaxyWorldView()
        {
            PixelPerfectCameraCtrl cameraCtrl    = FindObjectOfType <PixelPerfectCameraCtrl>();
            FollowController       camFollowCtrl = cameraCtrl.GetComponent <FollowController>();

            camFollowCtrl.Target              = null;//GameObject.Find("Planet (2)").transform;
            camFollowCtrl.DampTime            = 3f;
            camFollowCtrl.ApplyTargetRotation = false;
            camFollowCtrl.RotationDampTime    = 0.001f;

            float oriZoom = cameraCtrl.Zoom;
            float t       = 0f;

            for (float zoom = cameraCtrl.Zoom; zoom >= oriZoom / 5; zoom -= 0.002f, t += 0.000005f)
            {
                Vector3           vTarget  = Vector3.zero;
                PlanetBehaviour[] aPlanets = FindObjectsOfType <PlanetBehaviour>();
                for (int i = 0; i < aPlanets.Length; ++i)
                {
                    vTarget += aPlanets[i].transform.position;
                }
                vTarget  /= aPlanets.Length;
                vTarget.z = cameraCtrl.transform.position.z;

                cameraCtrl.transform.position = Vector3.Slerp(cameraCtrl.transform.position, vTarget, t);
                cameraCtrl.Zoom = zoom;
                yield return(null);
            }

            yield return(null);
        }
    private void _DoBodyFreeMoveHandle(Vector3 vBody)
    {
        PixelPerfectCameraCtrl owner = (PixelPerfectCameraCtrl)target;
        Vector3 vTransform           = (Vector3)owner.BoundingBox.center + vBody;

        EditorGUI.BeginChangeCheck();
        Handles.color = Color.green;
        //NOTE: vBodyHandler will be the body size change difference
        Vector3 vBodyHandler = Handles.FreeMoveHandle(vTransform, Quaternion.identity, 0.15f * HandleUtility.GetHandleSize(owner.transform.position), Vector3.zero, Handles.SphereCap) - vTransform;

        vBodyHandler = owner.transform.InverseTransformVector(vBodyHandler);

        if (EditorGUI.EndChangeCheck())
        {
            if (vBody.x > 0)
            {
                Undo.RecordObject(target, "Modified Body Right");
                owner.BoundingBox.size += new Vector2(vBodyHandler.x / 2, 0f);
            }
            else if (vBody.x < 0)
            {
                Undo.RecordObject(target, "Modified Body Left");
                owner.BoundingBox.size   += new Vector2(-vBodyHandler.x / 2, 0f);
                owner.BoundingBox.center += new Vector2(vBodyHandler.x / 2, 0f);
            }
            else if (vBody.y > 0)
            {
                Undo.RecordObject(target, "Modified Body Up");
                owner.BoundingBox.size += new Vector2(0f, vBodyHandler.y / 2);
            }
            else if (vBody.y < 0)
            {
                Undo.RecordObject(target, "Modified Body Down");
                owner.BoundingBox.size   += new Vector2(0f, -vBodyHandler.y / 2);
                owner.BoundingBox.center += new Vector2(0f, vBodyHandler.y / 2);
            }
            EditorUtility.SetDirty(target);
        }
    }
    public void OnSceneGUI()
    {
        PixelPerfectCameraCtrl owner = (PixelPerfectCameraCtrl)target;

        if (owner.KeepInsideBoundingBox)
        {
            HandlesEx.DrawRectWithOutline(owner.BoundingBox, new Color(0, 0, 0, 0), Color.cyan);

            // Draw Center Moving Handler
            EditorGUI.BeginChangeCheck();
            Handles.color = Color.yellow;
            Vector3 vCenter = Handles.FreeMoveHandle(owner.BoundingBox.center, Quaternion.identity, 0.05f * HandleUtility.GetHandleSize(owner.transform.position), Vector3.zero, Handles.DotCap);
            if (EditorGUI.EndChangeCheck())
            {
                Undo.RecordObject(target, "Move Center");
                owner.BoundingBox.center = vCenter;
                EditorUtility.SetDirty(target);
            }

            // Draw Body Moving Handlers
            _DoBodyFreeMoveHandle(new Vector3(owner.BoundingBox.size.x / 2, 0f));
            _DoBodyFreeMoveHandle(new Vector3(-owner.BoundingBox.size.x / 2, 0f));
            _DoBodyFreeMoveHandle(new Vector3(0f, owner.BoundingBox.size.y / 2, 0f));
            _DoBodyFreeMoveHandle(new Vector3(0f, -owner.BoundingBox.size.y / 2, 0f));

            if (owner.BoundingBox.width < 0f)
            {
                owner.BoundingBox.position = new Vector2(owner.BoundingBox.position.x + owner.BoundingBox.width, owner.BoundingBox.y);
                owner.BoundingBox.width    = -owner.BoundingBox.width;
            }

            if (owner.BoundingBox.height < 0f)
            {
                owner.BoundingBox.position = new Vector2(owner.BoundingBox.position.x, owner.BoundingBox.y + owner.BoundingBox.height);
                owner.BoundingBox.height   = -owner.BoundingBox.height;
            }
        }
    }
Пример #4
0
 void Start()
 {
     m_camera2D   = FindObjectOfType <PixelPerfectCameraCtrl>();
     m_playerCtrl = FindObjectOfType <SmartPlatformController>();
 }