SpriteKit 1维运动

时间:2013-11-20 10:39:16

标签: sprite-kit

我正在使用Apple的Sprite Kit,我只需要在水平移动中移动SKSprite节点。我想要应用物理学的其余部分,但仅适用于水平分量。

上下文:这是针对一个可以在滑块上来回反弹的物体。我已经完成了所有工作,但是如果它以错误的方式击中它只是垂直浮动,我怎么能简单地忽略垂直方向上的所有力。

3 个答案:

答案 0 :(得分:5)

在物理模拟后的每一帧将节点的位置放回所需的Y坐标:

-(void) didSimulatePhysics
{
    CGPoint pos = horizontalMoveNode.position;
    pos.y = fixedVerticalPosY;
    horizontalMoveNode.position = pos;
}

将此方法添加到场景类中,并将其应用于要在给定Y坐标处锁定的任何节点。

答案 1 :(得分:1)

您可以为此目的使用约束。我做了一个简短的样本,其节点只能在固定的X范围内移动,并且永远不会离开指定的Y位置:

SKSpriteNode* node = [SKSpriteNode node];
node.color = [SKColor greenColor];
node.size = CGSizeMake(20, 20);

SKRange* rangeX = [[SKRange alloc] initWithLowerLimit: 100 upperLimit: 400];
SKRange* rangeY = [SKRange rangeWithConstantValue: 100];
SKConstraint* positionConstraint = [SKConstraint positionX: rangeX Y: rangeY];

NSArray* constraintArray = [NSArray arrayWithObject: positionConstraint];
node.constraints = constraintArray;

[self addChild: node];

答案 2 :(得分:0)

此方法来自SKAction类,仅在水平或X轴上移动对象: -

[mySpriteNode runAction:[SKAction moveToX:260 duration:0.5]];

我希望这项工作适合你。