点击场景边缘时,节点应该弹跳

时间:2014-07-08 12:38:26

标签: ios objective-c sprite-kit

我从SpriteKit开始。我希望我的spriteNote从设备的边缘反弹。问题是我没有看到任何允许我添加边缘的方法。

// initWithSize:
_player.physicsBody.dynamic = YES;

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesEnded:touches withEvent:event];
    self.physicsWorld.gravity = CGVectorMake(0.0f, 1.0f);
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesEnded:touches withEvent:event];
    self.physicsWorld.gravity = CGVectorMake(0.0f, -1.0f);
}

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesCancelled:touches withEvent:event];
    self.physicsWorld.gravity = CGVectorMake(0.0f, -1.0f);
}

我已尝试向update方法添加内容,但位置看起来很奇怪(我只有横向模式,_player.position.y is ~150px,当我看不到播放器@。@ player graphic是50x50px,节点是SKPhysicsBody bodyWithCircleOfRadius:sprite.size.width / 2)。

1 个答案:

答案 0 :(得分:1)

为了在SpriteKit中为屏幕周围添加边缘以进行碰撞,您需要将physicsBody附加到场景中。

-initWithSize:方法中,您需要添加以下行:

self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];

这将在场景周围添加一个球可以反弹的边界。