Spritekit模拟流体流动

时间:2014-04-10 15:01:26

标签: objective-c sprite-kit physics game-physics fluid-dynamics

有一种简单的方法来模拟场景中的电流吗?我知道它们在spritekit中提供重力,质量,密度,阻力和其他属性,但我没有看到,我将如何模拟场景中当前影响的对象?

IE说我有一个使用重力和密度的物体,从屏幕顶部到底部,好像它是通过瓦特下降,设置它应该是相当直接的。但是,假设我想在场景中间添加一个从左到右流动的电流...当物体掉落时,它开始遇到电流的影响,并且坠落开始随着电流移动,因为它越靠近电流的中心,它增加了它的左/右运动,当它通过电流的中心并远离其中心时,左/右运动减慢。

这可能吗?我是否需要创建使用重力从左向右移动的invisibe /透明节点来模拟这个?或者我应该使用不同的方法吗?

1 个答案:

答案 0 :(得分:6)

这可以在-update方法中处理。您可以检查某个节点是否位于某个区域内并对其施加一个力,就好像它受到电流的影响一样。

编辑:我已经发布了一种可以根据当前中心区分力的方法。

-(void)update:(CFTimeInterval)currentTime
{

        for (SKNode *node in self.children)
        {
            if (node.position.y > 300 && node.position.y < 500) //Let's say the current is between these values, modify to your situation.
            {
                float diff = ABS (node.position.y - 400);//Difference from center of current.
                CGVector force = CGVectorMake(2*(100 - diff), 0);//Variable force
                [node.physicsBody applyForce:force];
            }
        }
}