您好設定區域內移動的對象我有一個對象,我可以觸摸移動,但我需要它只能在一組區域移動,以便從:在Xcode
X 0至320和 y 0到200
player.center = [myTouch locationInView:self.view];
什麼想法?
這是如此,如果用戶試圖將它移出這個區域,它只是掛在外邊緣。
您好設定區域內移動的對象我有一個對象,我可以觸摸移動,但我需要它只能在一組區域移動,以便從:在Xcode
X 0至320和 y 0到200
player.center = [myTouch locationInView:self.view];
什麼想法?
這是如此,如果用戶試圖將它移出這個區域,它只是掛在外邊緣。
這裏的代碼實際上很簡單,你只需要檢測其是否超過了界限,如果有,正確的它。假設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邊界也是如此。
您可以使用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;
}