Bu noktada platform ve programlama dili önemli değil, bunun için bir şey olup olmadığını bilmek istiyorum. Herhangi bir yardım takdir.
Bu noktada platform ve programlama dili önemli değil, bunun için bir şey olup olmadığını bilmek istiyorum. Herhangi bir yardım takdir.
Yanıtlar:
Q-Games'in Pixeljunk Shooter için ne kullandığına bakın. Oldukça ilgili sıvı fizik ile 2d oyunudur. Evde yetiştirilmiş veya ara katman yazılımı fizik motoru kullanıp kullanmadığından emin değilim, ancak bilgi muhtemelen bir yerde var.
Buna bakmadım, ama neredeyse her fizik motorunun fikri taklit edebileceği gerçeğini biliyorum. Box2D, vb.
Temelde, yüzeyler ve birbirinden sıçrayan parçacıklar var (gazlar için daha hızlı), aynı zamanda onlara etki gibi sabit bir yerçekimi verir (sıvıların hepsi aynı olurdu, ancak yavaşça yükselmek isteyebileceğiniz bazı gazlar).
Dış parçacıkları bağlarsanız, kütleyi temsil eden çokgen bir şekil elde edersiniz
VEYA
her bir parçacığın üzerine bir piksel veya parçacık grafiği çizerseniz, bunun yerine kütle için bir bulut etkisi elde edebilirsiniz.
Özellikle sıvılarla uğraşabileceğim tek kütüphane Fluidic'tir . Yine de oldukça alfa ve sadece bir sürümü var. Bullet fizik kütüphanesi , akışkanları modellemek için kullanılan bir teknik olan 'yumuşatılmış parçacık hidrodinamiğini' desteklemektedir. Kütüphane 3D'ye yönelik olsa da, 2D'de çalışmasını sağlamak için bir eksene kısıtlamalar uygulayabilirsiniz.
Benim tavsiyem, diğer cevaplarla ilgili bazı yorumlarda bahsettiğim gibi, Box2D veya Chipmunk gibi standart bir fizik motoru kullanmak ve suyu (yerçekimi ile) veya gazı (yerçekimi olmadan) modellemek ve bunları bir araya getirmek için birkaç daire kullanmaktır. bir su veya gaz gövdesi içine. Viskoziteyi simüle edebilmeniz için onları bir araya 'topaklaştırmak' için tek tek gövdelere bazı kısıtlamalar uygulayabilirsiniz. Şuna bir bakTek tek gövdelerin (videoda kareler olarak modellenmiştir) birlikte nasıl çalıştığını görmek bu videoya . Ancak, bu videoda kullanılan tekniğin bu paragrafta belirtilenle aynı olmadığını unutmayın. Çevrelerin birbirleriyle nasıl etkileşime girdiğini anlamak için videoyu kullanabilir ve bunu kullanılan fizik kütüphanesinde mevcut kısıtlamalarla taklit etmeye çalışabilirsiniz.
İlginç kısım, birden fazla daireyi su kütlesiyle birleştirmek istediğinizde gelir. Gelebileceğim en basit çözüm, her daireyi bir metaball olarak çizmektir, böylece daha büyük bir gövdenin parçası olarak görünürler. Bu cisimlerin arkasındaki matematik ve bazı örnek kodu burada bulabilirsiniz .
Bu sorunun gönderilmesinden bu yana birkaç yıl geçti, ancak arama yaparken karşılaştım, bu yüzden güncelleyeceğimi düşündüm.
Google, Box2D sistemi için LiquidFun (açık kaynak) yayınladı. Bazı sınırlamaları vardır, ancak oldukça iyi performansa sahip sıvı, kum vb parçacıklar ile başlamak için hızlı bir yoldur.
https://github.com/google/liquidfun
PixelJunk harika bir yaklaşıma sahip, ancak özel bir kütüphane. GCD 2010'daki konuşmalarında inanılmaz düzeyde ayrıntı paylaştılar.