ドラッグ ジェスチャ中に SKSpriteNode が画面の境界内に留まるかどうかを確認しようとしています。問題にアプローチするためのロジックは正しいと確信していますが、実装は間違っています。基本的に、プレーヤーが翻訳から移動する前に、プログラムは境界内にあるかどうかを確認します。これが私のコードです:
-(CGPoint)checkBounds:(CGPoint)newLocation{
CGSize screenSize = self.size;
CGPoint returnValue = newLocation;
if (newLocation.x <= self.player.position.x){
returnValue.x = MIN(returnValue.x,0);
} else {
returnValue.x = MAX(returnValue.x, screenSize.width);
}
if (newLocation.y <= self.player.position.x){
returnValue.y = MIN(-returnValue.y, 0);
} else {
returnValue.y = MAX(returnValue.y, screenSize.height);
}
NSLog(@"%@", NSStringFromCGPoint(returnValue));
return returnValue;
}
-(void)dragPlayer: (UIPanGestureRecognizer *)gesture {
CGPoint translation = [gesture translationInView:self.view];
CGPoint newLocation = CGPointMake(self.player.position.x + translation.x, self.player.position.y - translation.y);
self.player.position = [self checkBounds:newLocation];
}
何らかの理由で、プレーヤーが画面からはみ出してしまいます。MIN & MAX マクロの使い方が間違っているのではないかと思いますが、よくわかりません。