在SKAction下使用SKPhysicsBody的SKNodes移动不准确

时间:2017-01-17 17:02:22

标签: objective-c sprite-kit skphysicsbody skaction sknode

我有两个带物理的SKNode(一个在另一个下):

- (SKNode*) newNode {
    SKShapeNode *node = [SKShapeNode shapeNodeWithCircleOfRadius:60];
    node.strokeColor = [SKColor clearColor];
    node.fillColor = [SKColor greenColor];

    node.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:60];
    node.physicsBody.categoryBitMask = 1;
    node.physicsBody.collisionBitMask = 1;
    node.physicsBody.contactTestBitMask = 1;
    return node;
}

- (void)createSceneContents {
    SKNode *n1 = [self newNode];
    n1.position = CGPointMake(100,100);
    [self addChild:n1];

    SKNode *n2 = [self newNode];
    n2.position = CGPointMake(100,300);
    [self addChild:n2];
    ...
}

他们的目标是在一定距离内直接到达他们对面的预定位置。

为实现这一目标,我使用SKAction(这很重要,无法更改):

[n1 runAction:[SKAction moveTo:CGPointMake(800,100) duration:3]];
[n2 runAction:[SKAction moveTo:CGPointMake(800,300) duration:3]];

此外,在第一个节点的移动路径上,我放置了第三个节点 - 完全相同。

 - (void)createSceneContents {
    ...
    SKNode *obstacle = [self newNode];
    obstacle = CGPointMake(500,300);
    [self addChild:obstacle];
 }

必须通过物理机制将第三个节点移向第一个节点的运动方向。

Click to illustration of the Scene (红色圆圈标记节点的目标位置)

然后我运行应用程序,一切都按照设想进行,除了一件事 - 第一个节点(路径上有障碍物)没有到达目标位置,只有几个像素:

Click to see result

问题很简单:为什么?我该如何解决? 谢谢!

0 个答案:

没有答案