我一直试图阻止由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];
}
有什么想法吗?