コード例 #1
0
    /// <summary>
    /// Makes the text mesh pixel perfect to the active camera.
    /// Automatically detects <see cref="tk2dCamera"/> if present
    /// Otherwise uses Camera.main
    /// </summary>
    public void MakePixelPerfect()
    {
        float      s   = 1.0f;
        tk2dCamera cam = tk2dCamera.CameraForLayer(gameObject.layer);

        if (cam != null)
        {
            if (_fontInst.version < 1)
            {
                Debug.LogError("Need to rebuild font.");
            }

            float zdist        = (transform.position.z - cam.transform.position.z);
            float textMeshSize = (_fontInst.invOrthoSize * _fontInst.halfTargetHeight);
            s = cam.GetSizeAtDistance(zdist) * textMeshSize;
        }
        else if (Camera.main)
        {
            if (Camera.main.orthographic)
            {
                s = Camera.main.orthographicSize;
            }
            else
            {
                float zdist = (transform.position.z - Camera.main.transform.position.z);
                s = tk2dPixelPerfectHelper.CalculateScaleForPerspectiveCamera(Camera.main.fieldOfView, zdist);
            }
            s *= _fontInst.invOrthoSize;
        }
        scale = new Vector3(Mathf.Sign(scale.x) * s, Mathf.Sign(scale.y) * s, Mathf.Sign(scale.z) * s);
    }
コード例 #2
0
ファイル: tk2dBaseSprite.cs プロジェクト: LootDigger/The-line
    /// <summary>
    /// Makes the sprite pixel perfect to the active camera.
    /// Automatically detects <see cref="tk2dCamera"/> if present
    /// Otherwise uses Camera.main
    /// </summary>
    public void MakePixelPerfect()
    {
        float      s   = 1.0f;
        tk2dCamera cam = tk2dCamera.CameraForLayer(gameObject.layer);

        if (cam != null)
        {
            if (Collection.version < 2)
            {
                CustomDebug.LogError("Need to rebuild sprite collection.");
            }

            float zdist      = (transform.position.z - cam.transform.position.z);
            float spriteSize = (Collection.invOrthoSize * Collection.halfTargetHeight);
            s = cam.GetSizeAtDistance(zdist) * spriteSize;
        }
        else if (Camera.main)
        {
#if UNITY_5
            if (Camera.main.orthographic)
#else
            if (Camera.main.isOrthoGraphic)
#endif

            {
                s = Camera.main.orthographicSize;
            }
            else
            {
                float zdist = (transform.position.z - Camera.main.transform.position.z);
                s = tk2dPixelPerfectHelper.CalculateScaleForPerspectiveCamera(Camera.main.fieldOfView, zdist);
            }
            s *= Collection.invOrthoSize;
        }
        else
        {
            CustomDebug.LogError("Main camera not found.");
        }


        scale = new Vector3(Mathf.Sign(scale.x) * s, Mathf.Sign(scale.y) * s, Mathf.Sign(scale.z) * s);
    }
コード例 #3
0
    void UpdateTransform()
    {
        // Break out if anchor camera is not bound
        if (AnchorCamera == null)
        {
            return;
        }

        float   pixelScale = 1;       // size of one pixel
        Vector3 position   = myTransform.localPosition;

        // we're ignoring perspective tk2dCameras for now
        tk2dCamera currentCamera = (AnchorTk2dCamera != null && AnchorTk2dCamera.CameraSettings.projection != tk2dCameraSettings.ProjectionType.Perspective) ? AnchorTk2dCamera : null;

        Rect rect = new Rect();

        if (currentCamera != null)
        {
            rect       = anchorToNativeBounds ? currentCamera.NativeScreenExtents : currentCamera.ScreenExtents;
            pixelScale = currentCamera.GetSizeAtDistance(1);
        }
        else
        {
            rect.Set(0, 0, AnchorCamera.pixelWidth, AnchorCamera.pixelHeight);
        }

        float y_bot = rect.yMin;
        float y_top = rect.yMax;
        float y_ctr = (y_bot + y_top) * 0.5f;

        float x_lhs = rect.xMin;
        float x_rhs = rect.xMax;
        float x_ctr = (x_lhs + x_rhs) * 0.5f;

        Vector3 anchoredPosition = Vector3.zero;

        switch (AnchorPoint)
        {
        case tk2dBaseSprite.Anchor.UpperLeft:           anchoredPosition = new Vector3(x_lhs, y_top, position.z); break;

        case tk2dBaseSprite.Anchor.UpperCenter:         anchoredPosition = new Vector3(x_ctr, y_top, position.z); break;

        case tk2dBaseSprite.Anchor.UpperRight:          anchoredPosition = new Vector3(x_rhs, y_top, position.z); break;

        case tk2dBaseSprite.Anchor.MiddleLeft:          anchoredPosition = new Vector3(x_lhs, y_ctr, position.z); break;

        case tk2dBaseSprite.Anchor.MiddleCenter:        anchoredPosition = new Vector3(x_ctr, y_ctr, position.z); break;

        case tk2dBaseSprite.Anchor.MiddleRight:         anchoredPosition = new Vector3(x_rhs, y_ctr, position.z); break;

        case tk2dBaseSprite.Anchor.LowerLeft:           anchoredPosition = new Vector3(x_lhs, y_bot, position.z); break;

        case tk2dBaseSprite.Anchor.LowerCenter:         anchoredPosition = new Vector3(x_ctr, y_bot, position.z); break;

        case tk2dBaseSprite.Anchor.LowerRight:          anchoredPosition = new Vector3(x_rhs, y_bot, position.z); break;
        }

        Vector3 screenAnchoredPosition = anchoredPosition + new Vector3(pixelScale * offset.x, pixelScale * offset.y, 0);

        if (currentCamera == null)           // not a tk2dCamera, we need to transform
        {
            Vector3 worldAnchoredPosition = AnchorCamera.ScreenToWorldPoint(screenAnchoredPosition);
            if (myTransform.position != worldAnchoredPosition)
            {
                myTransform.position = worldAnchoredPosition;
            }
        }
        else
        {
            Vector3 oldPosition = myTransform.localPosition;
            if (oldPosition != screenAnchoredPosition)
            {
                myTransform.localPosition = screenAnchoredPosition;
            }
        }
    }
コード例 #4
0
	void UpdateTransform()
	{
		// Break out if anchor camera is not bound
		if (AnchorCamera == null) {
			return;
		}

		float pixelScale = 1; // size of one pixel
		Vector3 position = myTransform.localPosition;

		// we're ignoring perspective tk2dCameras for now
		tk2dCamera = (AnchorTk2dCamera != null && AnchorTk2dCamera.CameraSettings.projection != tk2dCameraSettings.ProjectionType.Perspective) ? AnchorTk2dCamera : null;

		Rect rect = new Rect();
		if (tk2dCamera != null) {
			rect = anchorToNativeBounds ? tk2dCamera.NativeScreenExtents : tk2dCamera.ScreenExtents;
			pixelScale = tk2dCamera.GetSizeAtDistance( 1 ); 
		}
		else {
			rect.Set(0, 0, AnchorCamera.pixelWidth, AnchorCamera.pixelHeight);
		}

		float y_bot = rect.yMin;
		float y_top = rect.yMax;
		float y_ctr = (y_bot + y_top) * 0.5f;

		float x_lhs = rect.xMin;
		float x_rhs = rect.xMax;
		float x_ctr = (x_lhs + x_rhs) * 0.5f;

		Vector3 anchoredPosition = Vector3.zero;

		switch (AnchorPoint)
		{
		case tk2dBaseSprite.Anchor.UpperLeft: 		anchoredPosition = new Vector3(x_lhs, y_top, position.z); break;
		case tk2dBaseSprite.Anchor.UpperCenter: 	anchoredPosition = new Vector3(x_ctr, y_top, position.z); break;
		case tk2dBaseSprite.Anchor.UpperRight: 		anchoredPosition = new Vector3(x_rhs, y_top, position.z); break;
		case tk2dBaseSprite.Anchor.MiddleLeft: 		anchoredPosition = new Vector3(x_lhs, y_ctr, position.z); break;
		case tk2dBaseSprite.Anchor.MiddleCenter:	anchoredPosition = new Vector3(x_ctr, y_ctr, position.z); break;
		case tk2dBaseSprite.Anchor.MiddleRight: 	anchoredPosition = new Vector3(x_rhs, y_ctr, position.z); break;
		case tk2dBaseSprite.Anchor.LowerLeft: 		anchoredPosition = new Vector3(x_lhs, y_bot, position.z); break;
		case tk2dBaseSprite.Anchor.LowerCenter: 	anchoredPosition = new Vector3(x_ctr, y_bot, position.z); break;
		case tk2dBaseSprite.Anchor.LowerRight: 		anchoredPosition = new Vector3(x_rhs, y_bot, position.z); break;
		}
		
		Vector3 screenAnchoredPosition = anchoredPosition + new Vector3(pixelScale * offset.x, pixelScale * offset.y, 0);
		if (tk2dCamera == null) { // not a tk2dCamera, we need to transform
			Vector3 worldAnchoredPosition = AnchorCamera.ScreenToWorldPoint( screenAnchoredPosition );
			if (myTransform.position != worldAnchoredPosition) {
				myTransform.position = worldAnchoredPosition;
			}
		}
		else {
			Vector3 oldPosition = myTransform.localPosition;
			if (oldPosition != screenAnchoredPosition) {
				myTransform.localPosition = screenAnchoredPosition;
			}
		}
	}