Tại thời điểm này, nền tảng và ngôn ngữ lập trình không thành vấn đề, tôi chỉ muốn biết liệu có thứ gì đó tồn tại cho việc này không. Bất kỳ trợ giúp được đánh giá cao.
Tại thời điểm này, nền tảng và ngôn ngữ lập trình không thành vấn đề, tôi chỉ muốn biết liệu có thứ gì đó tồn tại cho việc này không. Bất kỳ trợ giúp được đánh giá cao.
Câu trả lời:
Nhìn vào những gì Q-Games đã sử dụng cho Pixeljunk Shooter. Đây là một trò chơi 2d với vật lý chất lỏng khá liên quan. Tôi không chắc họ đã sử dụng một công cụ vật lý cây nhà lá vườn hay vật trung gian, nhưng thông tin có lẽ ở đâu đó.
Chà, tôi không nhìn vào điều này, nhưng tôi biết một thực tế là hầu hết mọi động cơ vật lý đều có thể mô phỏng ý tưởng. Box2D, v.v.
Về cơ bản có các hạt nảy xung quanh, ngoài bề mặt và nhau (nhanh hơn cho khí) nhưng cũng tạo cho chúng một lực hấp dẫn không đổi như hiệu ứng (tất cả các chất lỏng đều có cùng, nhưng một số loại khí bạn có thể muốn tăng chậm).
Nếu bạn liên kết các hạt bên ngoài, bạn sẽ có được hình dạng đa giác đại diện cho khối lượng
HOẶC LÀ
nếu bạn chỉ đơn giản vẽ một pixel hoặc đồ họa hạt trên mỗi hạt, bạn có thể đạt được hiệu ứng đám mây cho khối lượng thay thế.
Thư viện duy nhất tôi có thể đưa ra với các giao dịch cụ thể về chất lỏng là Fluidic . Nó là khá alpha và chỉ có một bản phát hành, mặc dù. Thư viện vật lý Bullet hỗ trợ 'thủy động lực học hạt mịn', một kỹ thuật được sử dụng để mô hình hóa chất lỏng. Mặc dù thư viện hướng đến 3D, bạn có thể áp dụng các ràng buộc cho một trục để làm cho nó hoạt động ở dạng 2D.
Lời khuyên của tôi là, như tôi đã đề cập trong một số nhận xét về các câu trả lời khác, sử dụng một công cụ vật lý tiêu chuẩn như Box2D hoặc Chipmunk và sử dụng một số vòng tròn để mô hình hóa nước (với trọng lực) hoặc khí (không có trọng lực) và kết hợp chúng lại với nhau vào một cơ thể nước hoặc khí. Bạn có thể áp dụng một số ràng buộc trên các cơ thể riêng lẻ để làm cho chúng 'co cụm' lại với nhau để bạn có thể mô phỏng độ nhớt. Hãy xem video này để xem các cơ quan riêng lẻ (được mô phỏng như hình vuông trong video) phối hợp với nhau như thế nào. Lưu ý, tuy nhiên, kỹ thuật được sử dụng trong video này không giống như được đề cập trong đoạn này. Bạn có thể sử dụng video để cảm nhận về cách các vòng tròn tương tác với nhau và cố gắng bắt chước điều này với các ràng buộc có trong thư viện vật lý được sử dụng.
Phần thú vị đến khi bạn muốn kết hợp nhiều vòng tròn vào cơ thể của nước. Giải pháp đơn giản nhất mà tôi có thể đưa ra được bản vẽ từng vòng tròn như một Metaball để họ xuất hiện như một phần của cơ thể lớn hơn. Bạn có thể tìm thấy toán học và một số mã ví dụ đằng sau các cơ quan này ở đây .
Đã vài năm kể từ khi câu hỏi này được đăng, nhưng tôi đã xem qua nó trong khi tìm kiếm, vì vậy tôi nghĩ rằng tôi sẽ cập nhật nó.
Google đã phát hành LiquidFun (mã nguồn mở) cho hệ thống Box2D. Nó có một số hạn chế, nhưng đó là một cách nhanh chóng để bắt đầu với các hạt chất lỏng, cát, vv với hiệu suất khá tốt.
https://github.com/google/l Liquidfun
PixelJunk có một cách tiếp cận tuyệt vời, nhưng đó là một thư viện riêng. Họ đã chia sẻ một mức độ chi tiết đáng kinh ngạc trong bài nói chuyện của họ tại GCD 2010.