1. mockup'ınıza yakın bir şey istiyorsanız, parçacıklar kullanırdım (tamamen şişmiş bir parçacık sistemi olması gerekmez).
Parçacıklarınızı bir RenderTexture üzerinde çokgen şeklinde işleyin. Parçacıklar üzerinde ilave karıştırma kullandığınızdan emin olun. Çokgenin içindeki parçacıklar birbirine karışır, dıştaki parçacıklar ise istediğiniz yumuşak kenarı verir. (Efektin bir örneği bu youtube videosunda izlenebilir: Ek Parçacıklar Videosu
Şimdi RenderTexture'ı ana ekranınıza oluşturun ve işiniz bitti. RenderTexture, parçacıkların arka planınızla karışmaması için gereklidir.
Üçgenleri doğrudan parçacık dokusuna koymayı ve bunun nasıl çalıştığını görmeyi deneyebilirsiniz. Aksi takdirde, ayrı bir katman olarak "parçacık çorba" üstünde onları render.
Güncellenmiş bir jsfiddle'da buna benzeyen hızlı bir mockup oluşturuldu
Güncellenmiş demoyu burada bulabilirsiniz
Her parçacığın hızı ve kaynağı vardır. Oynatıcınız çokgene dokunduğunda, her parçacık hızını oynatıcı hızıyla orantılı olarak değiştirirsiniz. Bir parçacık oynatıcınızdan ne kadar uzaksa, oyuncuların hızından o kadar az etkilenir.
Bir parçacık hızını hesaplamak için formül aşağıdaki gibi bir şey olacaktır:
//player.velocity and particle.velocity are vectors
//k is a factor to enhance or weaken the influence of players velocity
var distanceToPlayer = (player.position - particle.position).length();
particle.velocity = particle.velocity + ((k * player.velocity) + particle.velocity) * (1/distanceToPlayer);
Parçacığın konumunu hesaplamak için bunu güncelleme yönteminize koyun:
var speedY = -(springConstant * (particle.position.y - particle.origin.y)) - (dampingFactor * particle.velocity.y);
var speedX = -(springConstant * (particle.position.x - particle.origin.x)) - (dampingFactor * particle.velocity.x);
particle.position.y = particle.position.y + speedY;
particle.position.x = particle.position.x + speedX;
particle.velocity.x = particle.velocity.x + speedX;
particle.velocity.y = particle.velocity.y + speedY;
Bu, oyuncu sıvıyı karıştırdığında her parçacığın başlangıç noktasında sallandığı bir "sıvı" vermelidir. SpringConstant, bir parçacığın kaynağından ne kadar uzağa sallandığını ve sönümlemesini değiştirir. Oyunumda kullandığım bir 1d simülasyonunun değiştirilmiş versiyonu olduğu için kodu değiştirmeniz gerekebilir.
Şimdi bir demo ile: Demo
Sadece sıvı istediğiniz gibi davranana kadar üstteki 3 sabitleri değiştirin.