Sprite Kit播放器仍然可以离开屏幕

时间:2014-06-30 04:49:37

标签: ios objective-c sprite-kit boundary

我一直试图阻止由UIPanGestureRecognizer控制的精灵离开屏幕。我尝试使用此代码创建此代码,但播放器仍然可以离开屏幕。

-(id)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {
    self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
    self.physicsBody.categoryBitMask = wallCategory;

    player = [SKSpriteNode spriteNodeWithImageNamed:@"thePlayer.png"];
    player.size = CGSizeMake(35, 35);
    player.position = CGPointMake(self.frame.size.width/2, self.frame.size.height/2);
    player.name = kPlayerName;
    player.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:player.size.width/2];
    player.physicsBody.dynamic = NO;
    player.physicsBody.usesPreciseCollisionDetection = YES;
    player.physicsBody.categoryBitMask = playerCategory;
    player.physicsBody.restitution = 0;
    player.physicsBody.collisionBitMask = enemyCategory | wallCategory;
    player.physicsBody.contactTestBitMask = enemyCategory | bonusCategory;
    [self addChild:player];
    }

 - (void)didMoveToView:(SKView *)view
{
   [super didMoveToView:view];
   if (!pan) {
    pan = [[UIPanGestureRecognizer alloc]initWithTarget:self   action:@selector(dragPlayer:)];
    pan.minimumNumberOfTouches = 1;
    pan.delegate = self;
    [self.view addGestureRecognizer:pan];
}
}

-(void)dragPlayer: (UIPanGestureRecognizer *)gesture {
CGPoint trans = [gesture translationInView:self.view];
SKAction *moveAction =  [SKAction moveByX:trans.x y:-trans.y  duration:0];
[player runAction:moveAction];
[gesture setTranslation:CGPointMake(0, 0) inView:self.view];

}

有什么想法吗?

0 个答案:

没有答案