public void SetAsPixelPerfect() { #if UNITY_EDITOR if (Vector3H == null) { base.Awake(); } if (_sprite == null) { GetSprite(); } if (_pixelPerfectPlugin == null) { GetPixelPerfectPlugin(); } if (Vector3H == null || _sprite == null || _pixelPerfectPlugin == null) { return; } #endif // Reset position if (IsAChildSprite) { _transform.localPosition = VectorHVD( Utils.AlignToGrid(LocalPosition.x, _pixelPerfectPlugin.PixelStep), Utils.AlignToGrid(LocalPosition.y, _pixelPerfectPlugin.PixelStep), Vector3D(_transform.localPosition)); } // PointPosition _transform.position = VectorHVD( Utils.AlignToGrid(Vector3H(_transform.position), _pixelPerfectPlugin.PixelStep), Utils.AlignToGrid(Vector3V(_transform.position), _pixelPerfectPlugin.PixelStep), Vector3D(_transform.position)); // Scale if (SpriteScale == 0) { //The user was at 0 scale the last update, so save the current scale if (_prevSpriteScale == 0) { _initialScale = _transform.localScale; } //The user just changed the scale to 0, so restore the original scale else { _transform.localScale = _initialScale; } } else { var adjustedSpriteScale = SpriteScale < 0 ? 1f / (float)SpriteScale * -1f : SpriteScale; var scale = 1f; #if PC2D_TK2D_SUPPORT if (_spriteTk2d != null) { scale = _pixelPerfectPlugin.Tk2DPixelsPerMeter * adjustedSpriteScale * (1 / _pixelPerfectPlugin.PixelsPerUnit); } else { #endif scale = _sprite.pixelsPerUnit * adjustedSpriteScale * (1 / _pixelPerfectPlugin.PixelsPerUnit); #if PC2D_TK2D_SUPPORT } #endif _transform.localScale = new Vector3( Mathf.Sign(_transform.localScale.x) * scale, Mathf.Sign(_transform.localScale.y) * scale, _transform.localScale.z); } }
public Vector3 OverridePosition(float deltaTime, Vector3 originalPosition) { if (!enabled) { return(originalPosition); } // We do this so we can have the camera movement not snapping to the grid, while the sprites are var cameraPixelStep = _pixelStep; if (SnapMovementToGrid && !SnapCameraToGrid) { cameraPixelStep = 1f / (PixelsPerUnit * (ViewportScale + Zoom - 1)); } // If shaking, align the shake parent position to pixel-perfect _parent = _transform.parent; if (_parent != null && _parent.position != Vector3.zero) { _parent.position = VectorHVD(Utils.AlignToGrid(Vector3H(_parent.position), cameraPixelStep), Utils.AlignToGrid(Vector3V(_parent.position), cameraPixelStep), Vector3D(_parent.position)); } return(VectorHVD(Utils.AlignToGrid(Vector3H(originalPosition), cameraPixelStep), Utils.AlignToGrid(Vector3V(originalPosition), cameraPixelStep), 0)); }