Gradient trong Sprite Kit

Tìm hiểu cách dễ dàng hiển thị một gradient tuyến tính đơn giản cho cảnh SpriteKit của bạn

Vui lòng sao chép mã từ repo Github của tôi .

Ý tưởng rất đơn giản

Kết xuất a UIImagevới một lớp gradient. Gán hình ảnh gradient cho một SKTextuređối tượng. Gán đối tượng kết cấu cho an SKSpriteNodevà thêm sprite làm con vào khung cảnh.

Mở rộng lớp UIImage để hiển thị hình ảnh Gradient

Để hiển thị hình ảnh gradient, chúng ta cần mở rộng lớp cơ sở của UIImage.

Về cơ bản, hành vi mở rộng này là nó cho phép chúng ta cấu hình một lớp gradient, và sau đó kết xuất UIImagebằng cách sử dụng lớp gradient.

extension UIImage {
    static func gradientImage(withBounds: CGRect, startPoint: CGPoint, endPoint: CGPoint , colors: [CGColor]) -> UIImage {
        
        // Configure the gradient layer based on input
        let gradientLayer = CAGradientLayer()
        gradientLayer.frame = withBounds
        gradientLayer.colors = colors
        gradientLayer.startPoint = startPoint
        gradientLayer.endPoint = endPoint
// Render the image using the gradient layer
        UIGraphicsBeginImageContext(gradientLayer.bounds.size)
        gradientLayer.render(in: UIGraphicsGetCurrentContext()!)
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        
        return image!
    }
}

Hãy thoải mái sử dụng bất kỳ màu nào (và nhớ biến đổi chúng thành cgColor). Tôi sẽ sử dụng các màu tương tự như trong Animated Gradient trong Swift .

let color1: CGColor = UIColor(red: 209/255, green: 107/255, blue: 165/255, alpha: 1).cgColor
let color2: CGColor = UIColor(red: 134/255, green: 168/255, blue: 231/255, alpha: 1).cgColor
let color3: CGColor = UIColor(red: 95/255, green: 251/255, blue: 241/255, alpha: 1).cgColor

Lớp Gradient có các thuộc tính startPointvà endPoint. Chúng được xác định trong không gian tọa độ đơn vị của lớp gradient, bất kể lớp gradient được vẽ trên hình vuông hay hình chữ nhật. Hướng của một gradient tuyến tính là từ startPointhướng tới endPoint. Điều này có thể gây nhầm lẫn, nhưng về cơ bản, hướng của gradient là hướng mà màu sắc thay đổi nhanh chóng nhất.

Hãy thoải mái chọn bất kỳ hướng nào bạn thích. Tôi sẽ sử dụng gradient trên cùng bên trái trong ví dụ này:

let startPoint = CGPoint(x: 0, y: 0)
let endPoint = CGPoint(x: 1, y: 1)

Bây giờ bên trong didMovehàm ví dụ , tạo một hình ảnh gradient với khung của cảnh làm ranh giới của nó, và sử dụng các màu được xác định ở trên + đặt điểm đầu và điểm cuối của gradient để xác định hướng của nó.

let image: UIImage = UIImage.gradientImage(withBounds: self.frame, startPoint: startPoint, endPoint: endPoint, colors: [color1, color2, color3])

let gradientTexture = SKTexture(image: image)
let gradientNode = SKSpriteNode(texture: gradientTexture)
self.addChild(gradientNode)

Trong gradient ẩn tất cả các sprite khác trong cảnh, bạn cần điều chỉnh vị trí z của lớp gradient bằng cách thay đổi gradientNode.zPositionđể có giá trị nhỏ nhất trong số tất cả các nút khác nếu bạn muốn gradient ở trong nền.

Hy vọng bạn thích nó!

Người giới thiệu

Animated Gradient trong Swift

Suggested posts

Tài nguyên mã hóa được sử dụng nhiều nhất của tôi

Tài nguyên mã hóa được sử dụng nhiều nhất của tôi

Tuần này, tôi nhận được một email từ một thành viên trong danh sách email hàng ngày. Họ muốn biết: Bạn truy cập tài nguyên nào hàng ngày, hàng tuần và hàng tháng? Câu hỏi tuyệt vời! Tôi rất vui khi cố gắng chia sẻ một số thông tin chi tiết về quy trình làm việc của mình và các tài nguyên hàng đầu mà tôi sử dụng.

Hộp công cụ đầu cuối siêu hiện đại

Hộp công cụ đầu cuối siêu hiện đại

Các công cụ dòng lệnh, trình bao và thiết bị đầu cuối thiết lập tiêu chuẩn vào năm 2023. Tất cả các nhà phát triển đều sử dụng thiết bị đầu cuối; đối với một số người, toàn bộ quy trình làm việc của họ là thiết bị đầu cuối Bài đăng này giới thiệu Hộp công cụ thiết bị đầu cuối siêu hiện đại — thiết bị đầu cuối, trình bao và công cụ dòng lệnh thiết lập tiêu chuẩn vào năm 2023 Kitty với tư cách là Trình giả lập thiết bị đầu cuối Kitty là trình giả lập thiết bị đầu cuối — nó là một giải pháp thay thế cho Thiết bị đầu cuối Gnome , Alacritty hoặc Windows Terminal.

Related posts

Điều gì làm cho một podcast có ảnh hưởng?

Điều gì làm cho một podcast có ảnh hưởng?

Tuần trước, tôi nhận thấy một thông cáo báo chí, được gửi qua PressGazette (một trang web tin tức truyền thông của Anh). Bài báo thông báo rằng Acast, công ty quảng cáo và lưu trữ podcast của Scandi, sẽ lãnh đạo một tập đoàn gồm các nhà xuất bản “có lẽ là có ảnh hưởng nhất” trong lĩnh vực podcasting.

Hai năm trong ngành thiết kế- Tốt, xấu và xấu…

Hai năm trong ngành thiết kế- Tốt, xấu và xấu…

“Này Siri, chơi Me Dive của Olivia Dean.” Đó là tháng 5 năm 2021 khi tôi bắt đầu thực tập tại Học viện Tương lai Châu Phi ở Akure, Nigeria.

Tài trợ cho việc loại bỏ carbon trong năm tài chính 24

Phân tích các yêu cầu phân bổ của Carbon180 trên các lộ trình

Tài trợ cho việc loại bỏ carbon trong năm tài chính 24

Bởi Alyson Lee, cố vấn quản lý các vấn đề của chính phủ Quy trình phân bổ ngân sách hàng năm của chính phủ liên bang là trọng tâm trong những nỗ lực của chúng tôi nhằm tài trợ cho việc loại bỏ carbon dioxide (CDR). Mỗi năm, Carbon180 gửi yêu cầu tới các văn phòng quốc hội khác nhau để giúp hướng dẫn nơi đô la của năm tới sẽ chảy.

Học tập trong tuần làm việc quan trọng hơn bạn nghĩ

Học tập trong tuần làm việc quan trọng hơn bạn nghĩ

Chúng ta thường thấy mình phải vật lộn để thực hiện những gì chúng ta biết là tốt cho chúng ta. Từ việc nói với một người quan trọng khác rằng chúng ta yêu họ đến việc nhớ nói chuyện như một tên cướp biển, sẽ luôn có những người cho rằng không cần thiết phải tổ chức các sự kiện trong ngày, tuần hoặc tháng vì họ đã làm những việc đó rồi.