2014-02-28 73 views
0

我有一个物体沿着X轴移动,而另一个物体停下来。 发生碰撞后,我希望静止物体与运动物体一起移动。如何让一个物体粘在SpriteKit中的另一个移动物体上

我使用此代码来移动第一主体:

SKAction* moveBlock = [SKAction moveByX:-distanceToMove y:0 duration:0.01 * distanceToMove]; 
    SKAction* removeBlock = [SKAction removeFromParent]; 
    _moveBlocksAndRemove = [SKAction sequence:@[moveBlock, removeBlock]]; 

,并在碰撞检测我试图设置摩擦:

if (firstBody.categoryBitMask == categoryA && secondBody.categoryBitMask == categoryB) { 
      firstBody.friction = 1.0; 
      secondBody.friction = 1.0; 
} 

但没有奏效。由于其速度= 0,所以第一个物体的速度不起作用;

任何想法?

+0

你已经能够找到一个解决方案?我遇到了同样的问题,2个物体叠加在一起,从X/Y轴上的底部[矩形]移动它,而由于collisionBitMask顶部物体向右移动Y,没有链接/摩擦发生在X上,它只是停留在那个X上。不能使用关节,因为它是通过触摸表面连接在一起的两个独立的物体。我使用applyImpulse获得了或多或少的'工作',但我想用编程方式使用moveby移动矩形,而不是真正的冲动。 – Bluedays

回答

0

我还没有试过,但似乎你想要添加SKPhysicsJoint现场:

if (firstBody.categoryBitMask == categoryA && 
       secondBody.categoryBitMask == categoryB) { 
    SKPhysicsJointFixed* pin = 
        [SKPhysicsJointFixed jointWithBodyA:firstBody 
                bodyB:secondBody 
               anchor:firstBody.position]; 
    [self.physicsWorld addJoint:pin]; 
} 
+1

我试过了,但没有奏效。添加这个时,两个实体实际上都会忽略对方。 – Yuvals

+1

我认为你应该对节点的物理体施加力量或冲动,而不是使用'[SKAction moveByX:y:duration:]'方法 –

+0

由于我的身体在空中从一侧移动到另一侧, ..我想保持它在空气中移动..任何想法如何解决这个问题?如果我使它不动,它不会受到力的影响。 – Yuvals

相关问题