Exemple #1
0
        void SetCameraConstraints(SKCameraNode camera, SKSpriteNode sprite)
        {
            // Constrain the camera to the player
            var          zeroRange        = new SKRange(0, 0);
            SKConstraint playerConstraint = SKConstraint.CreateDistance(zeroRange, sprite);

            var scaledSize  = new CGSize(Size.Width * camera.XScale, Size.Height * camera.YScale);
            var contentRect = mapNode.CalculateAccumulatedFrame();

            contentRect = new CGRect(contentRect.X, contentRect.Y, contentRect.Width, contentRect.Height + 300);

            nfloat xInset = (nfloat)Math.Min((scaledSize.Width / 2.0) + 10, contentRect.Width / 2.0);
            nfloat yInset = (nfloat)Math.Min((scaledSize.Height / 2.0) + 10, contentRect.Height / 2.0);

            var insetRect = contentRect.Inset(xInset, yInset);

            var xRange = new SKRange(insetRect.GetMinX(), insetRect.GetMaxX());
            var yRange = new SKRange(insetRect.GetMinY(), insetRect.GetMaxY());

            var levelEdgeConstraint = SKConstraint.CreateRestriction(xRange, yRange);

            levelEdgeConstraint.ReferenceNode = this;

            camera.Constraints = new[] { playerConstraint, levelEdgeConstraint };
        }