0
我在背景精靈上添加一個精靈,然後縮放(捏)背景,並通過該精靈。如何在縮放後校準一個精靈touchLocation
縮放後,我想能夠在「縮放」的精靈上點擊右鍵,然後移動(平移)它。但是,要捕捉精靈,我必須點擊精靈之外。我想這是由於縮放和座標。
我真的需要一些幫助如何使它,使我總是隻需要點擊實際的精靈,如果它在原始狀態或放大或縮小。
我也將實現UIScrollView,所以我可以在背景中移動,但想先解決這個問題。
這裏是我用來測試這個代碼:
- (void)didMoveToView:(SKView *)view {
_background = [SKSpriteNode spriteNodeWithImageNamed:@"background"];
_background.name = @"background";
[_background setAnchorPoint:CGPointZero];
// _background.anchorPoint = CGPointMake(0.0, 0.1);
self.scaleMode = SKSceneScaleModeResizeFill;
[self addChild:_background];
SKLabelNode *texT = [SKLabelNode labelNodeWithFontNamed:@"Ariel"];
texT.text = @"X";
texT.position = CGPointMake(160, 260);
[_background addChild:texT];
_panGesture = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePan:)];
[self.view addGestureRecognizer:_panGesture];
_pinchGesture = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(handlePinch:)];
[self.view addGestureRecognizer:_pinchGesture];
/* Setup your scene here */
self.backgroundColor = [SKColor colorWithRed:0.15 green:0.15 blue:0.3 alpha:1.0];
SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"Spaceship"];
sprite.xScale = 0.2;
sprite.yScale = 0.2;
sprite.position = CGPointMake(160, 260);
sprite.name = @"sprite";
[_background addChild:sprite];
}
- (void)handlePan:(UIPanGestureRecognizer *)sender {
NSLog(@"handlePan:");
if (![_currentNode.name isEqualToString:@"background"]) {
_touchLocation = [sender locationInView:sender.view];
_touchLocation = [self convertPointFromView:_touchLocation];
_currentNode.position = _touchLocation;
}
}
- (void)handlePinch:(UIPinchGestureRecognizer *) sender {
NSLog(@"handlePinch: %f",sender.scale);
[self runAction:[SKAction scaleBy:sender.scale duration:0]];
sender.scale = 1;
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"touchesBegan");
//////DO THE FIRST TOUCH//////
_actualTouch = [touches anyObject];
_touchLocation = [_actualTouch locationInNode:self];
_currentNode = [self nodeAtPoint:_touchLocation];
NSLog(@"TouchBegan:_touchLocation:%@", NSStringFromCGPoint(_touchLocation));
NSLog(@"_currentNode.name: %@", _currentNode.name);
}
@end
我終於到了,我需要解決這個問題,你的代碼工作:-)然而,你的代碼中有一個錯誤「CGPointMake」應該是「CGSizeMake」。 // PeterK – PeterK
我還將多人遊戲改爲劃分以獲得正確的捏合與大小過程。 // PeterK – PeterK
哦,對不起@PeterK。當時我沒有在我的Mac上,所以我必須記住,顯然這沒有成功,哈哈。我會編輯我的答案。 – mgiesa