1. หากคุณต้องการบางสิ่งที่ใกล้เคียงกับแบบจำลองของคุณฉันจะใช้อนุภาค (มันไม่จำเป็นต้องเป็นระบบอนุภาคแบบเป่าเต็ม)
ทำให้อนุภาคของคุณในรูปของรูปหลายเหลี่ยมบน RenderTexture ตรวจสอบให้แน่ใจว่าใช้สารเติมแต่งผสมบนอนุภาค อนุภาคด้านในของรูปหลายเหลี่ยมจะผสมผสานกันอย่างราบรื่นในขณะที่อนุภาคด้านนอกจะให้ขอบที่นุ่มนวลที่คุณต้องการ (ตัวอย่างของเอฟเฟกต์สามารถดูได้ในวิดีโอ youtube นี้: วิดีโออนุภาคเพิ่มเติม
ตอนนี้แสดง RenderTexture บนหน้าจอหลักของคุณและคุณทำเสร็จแล้ว RenderTexture เป็นสิ่งจำเป็นเพื่อให้อนุภาคไม่ผสมผสานกับพื้นหลังของคุณ
คุณสามารถลองวางสามเหลี่ยมลงบนพื้นผิวของอนุภาคโดยตรงและดูว่ามันทำงานอย่างไร มิฉะนั้นแสดงไว้ด้านบนของ "ซุปอนุภาค" ของคุณเป็นเลเยอร์แยกต่างหาก
สร้าง mockup อย่างรวดเร็วใน jsfiddle ที่อัปเดตซึ่งมีลักษณะเช่นนี้
คุณสามารถค้นหาการสาธิตที่อัปเดตได้ที่นี่
2. แต่ละอนุภาคมีความเร็วและต้นกำเนิด เมื่อผู้เล่นของคุณสัมผัสกับรูปหลายเหลี่ยมคุณจะเปลี่ยนความเร็วของแต่ละอนุภาคตามสัดส่วนของความเร็วของผู้เล่น อนุภาคที่อยู่ไกลออกไปจากผู้เล่นของคุณยิ่งน้อยก็จะได้รับผลกระทบจากความเร็วของผู้เล่น
สูตรในการคำนวณความเร็วของอนุภาคจะเป็นดังนี้:
//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);
ในการคำนวณตำแหน่งของอนุภาคที่คุณใส่ไว้ในวิธีการอัพเดตของคุณ:
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;
สิ่งนี้จะให้ "ของเหลว" แก่คุณซึ่งอนุภาคแต่ละชนิดจะแกว่งไปรอบ ๆ จุดกำเนิดของมันเมื่อผู้เล่นขยับของเหลว ฤดูใบไม้ผลิคงที่เปลี่ยนแปลงว่าอนุภาคแกว่งตัวออกห่างจากจุดกำเนิดของมันมากแค่ไหนและตัวหน่วงการสั่นสะเทือนของอนุภาคจะหยุดนิ่งเร็วเพียงใด คุณอาจจะต้องปรับแต่งรหัสเนื่องจากมันเป็นรุ่น 1d ที่ดัดแปลงแล้วที่ฉันใช้ในเกมของฉัน
ขณะนี้มีการสาธิต: สาธิต
เพียงแค่ปรับค่าคงที่ 3 ที่ด้านบนจนกว่าของเหลวจะทำงานเหมือนที่คุณต้องการ