このスレッドで選択した回答を使用して、SKScene にズーム/ピンチを実装しました。
ピンチまたはズーム アクション中にヒーロー キャラクターを (スムーズに) 中央に配置しようとしています。そうしないと、heroNode が画面からすぐに消えてしまいます。必要なときに呼び出すことができる centerHero メソッドがあり、非常にうまく機能しますが、ピンチ ハンドラーの最後でこのメソッドを呼び出すと、効果が非常にぎくしゃくします。ピンチ ハンドラは次のとおりです。
- (void)handlePinch:(UIPinchGestureRecognizer *) recognizer
{
[map runAction:[SKAction scaleBy:recognizer.scale duration:0]];
recognizer.scale = 1;
// While zooming/pinching, make sure hero is centered:
[self centerHero];
}
そして、ここにセンターヒーローメソッドがあります:
- (void)centerHero
{
CGFloat centerX = self.view.bounds.size.width/2;
CGFloat centerY = self.view.bounds.size.height/2;
CGFloat heroX = [self.heroNode parent].position.x;
CGFloat heroY = [self.heroNode parent].position.y;
CGPoint heroPoint = CGPointMake(heroX, heroY);
CGPoint newHeroPoint = [self convertPoint:heroPoint fromNode:map];
CGFloat newHeroX = newHeroPoint.x;
CGFloat newHeroY = newHeroPoint.y;
CGFloat xDiff = centerX - newHeroX;
CGFloat yDiff = centerY - newHeroY;
SKAction *moveBy = [SKAction moveByX:xDiff y:yDiff duration:5];
[map runAction:moveBy];
}
この「自動センタリング」をスムーズにする方法について何か提案はありますか?