我正在开发一款游戏,其中水作为一种属性,可用于解决谜题并与其他屏幕元素进行交互,我非常有兴趣了解他们如何设法获得如此流畅的物理交互。
使用粒子可以用Box2D完成吗?
答案 0 :(得分:5)
在看到你正在谈论的游戏视频后(并且在被告知你正在谈论特定游戏之后),我认为metaballs模拟可能会成功。
谷歌搜索“我的水元球在哪里”,我找到了如何在Ludum Dare条目中实现这个确切游戏的描述:
http://www.ludumdare.com/compo/?p=104952&preview=true
粒子模拟器是最好的,但将其整合到游戏中需要一些我没有的宝贵时间。所以我创造了一个游泳池和障碍物以及大量具有相当高密度的小滑球。你不需要任何摩擦,阻尼和只有少量的恢复。当我的全屏尺寸为48米x32米时,一个球的半径约为0.25米。
模拟大量经常夹到一个地方的动态物体是非常重的操作。这需要考虑。出于这个原因,我使用了非常不准确的物理设置。我只用一个速度和位置子步进世界。我还将物理步长固定为30 / s。(比赛后我注意到20就足够了)总是在处理固定时间步时,你想要在物理没有步进但是渲染时插入或推断位置。我选择了外推法。这很简单。
RenderPos = PhysicalPos + Velocity * TimeAccumulator
然后他们继续描述渲染是如何诱骗玩家相信它是一个流动的而不是微小的球。他们使用一种形式的元球渲染。
我的方法是将水滴渲染为具有物体大小两倍半径的元球。制作元球的最快方法就是精灵,中间不透明,边缘完全透明,光滑的圆形渐变。