我有两个带物理的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 (红色圆圈标记节点的目标位置)
然后我运行应用程序,一切都按照设想进行,除了一件事 - 第一个节点(路径上有障碍物)没有到达目标位置,只有几个像素:
问题很简单:为什么?我该如何解决? 谢谢!