こんにちは。タッチで移動できるオブジェクトがありますが、設定された領域内でのみ移動できるようにする必要があります。
x 0〜320およびy 0〜200
player.center = [myTouch locationInView:self.view];
何か案は?
これは、ユーザーがこの領域から移動しようとすると、外側の端にぶら下がるようにするためです。
こんにちは。タッチで移動できるオブジェクトがありますが、設定された領域内でのみ移動できるようにする必要があります。
x 0〜320およびy 0〜200
player.center = [myTouch locationInView:self.view];
何か案は?
これは、ユーザーがこの領域から移動しようとすると、外側の端にぶら下がるようにするためです。
MINとMAXを使用して値を制約できます。
CGFloat minX = 0.0f;
CGFloat maxX = 320.0f;
CGFloat minY = 0.0f;
CGFloat maxY = 200.0f
CGPoint location = [myTouch locationInView:self.view];
CGPoint center = CGPointMake(MIN(minX, MAX(maxX, location.x)),
MIN(minY, MAX(maxY, location.y)));
player.center = center;
あなたはおそらくこのようなことをしたいと思うでしょう:
CGRect validRect = CGRectMake(0.0, 0.0, 320.0, 200.0);
CGPoint touchPoint = [myTouch locationInView:self.view];
if(CGRectContainsPoint(validRect, touchPoint) {
player.center = touchPoint;
}
ここでのコードは実際には非常に単純です。境界を超えているかどうかを検出し、超えている場合は修正するだけです。player.center
がのようなものであると仮定するとNSPoint
、コードは次のようになります。
if(player.center.x <= 0){
player.center.x = 0;
}else if(player.center.x >= 200){
player.center.x = 200;
}
if(player.center.y <= 0){
player.center.y = 0;
}else if(player.center.y >= 300){
player.center.y = 300;
}
エッジが側面を通過しないようにする場合は、次のようにすることができます。
if(player.center.x - player.xSize / 2 <= 0){
player.center.x = 0 + player.xSize / 2;
}
そして、他のx境界とy境界についても同じです。