我正在使用Apple的Sprite Kit,我只需要在水平移动中移动SKSprite节点。我想要应用物理学的其余部分,但仅适用于水平分量。
上下文:这是针对一个可以在滑块上来回反弹的物体。我已经完成了所有工作,但是如果它以错误的方式击中它只是垂直浮动,我怎么能简单地忽略垂直方向上的所有力。
答案 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]];
我希望这项工作适合你。