2013-04-12 1 views
0

안녕하세요. 제목이 미리 요약되어 있습니다. 가속도계를 사용하고 있지만 화면 15에 머물러 있습니다. 그것의 가장자리에 멈추는 데 어려움을 겪고 있습니다. 내 view controller.m 파일 코드가 있습니다.움직이는 UIImageview와 함께 OpenGL 게임 만들기하지만 화면 가장자리에서 멈추도록 할 수 있습니다.

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 

@synthesize person, delta; 

- (void)viewDidLoad 
{ 
    UIAccelerometer *accel =[UIAccelerometer sharedAccelerometer]; 
    accel.delegate = self; 
    accel.updateInterval = 1.0f/60.0f; 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

} 
-(void)accelerometer:(UIAccelerometer *)accelerometer 
     didAccelerate:(UIAcceleration *)acceleration{ 
    NSLog(@"x : %g", acceleration.x); 
    NSLog(@"y : %g", acceleration.y); 
    NSLog(@"z : %g", acceleration.z); 

    delta.x = acceleration.y *50; 
    // delta.x = acceleration.x *8; 


    person.center = CGPointMake(person.center.x + delta.x,person.center.y + delta.y); 
    } 


- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

@end 

답변

0

person.center를 업데이트 한 후, 그렇지 않으면 화면이 꺼지고,보기의 프레임에 캡해야합니다.

이 당신이 뷰의 왼쪽 가장자리 떨어져가는 사람을 중지하는 방법, 당신은 시작하려면 :

person.center = CGPointMake(person.center.x + delta.x,person.center.y + delta.y); 
// add this 
CGFloat leftOfWorld = 0.0f; 
CGFloat minCenterX = leftOfWorld + (person.bounds.size.width/2.0f); 
person.center = CGPointMake(MAX(minCenterX, person.center.x), person.center.y); 

사람은 center.x가 화면의 왼쪽 (폭이다/2) 왼쪽 가장자리에서. 이것은 우리의 최소값입니다. 그런 다음 최소값과 center.x 사이의 큰 값을 취합니다. center.x이이 최소값보다 아래로 이동하면 변경합니다.

화면의 다른 가장자리에도 비슷한 논리가 필요할 것입니다. self.view.widthself.view.height을 사용하여 화면의 오른쪽 및 아래쪽 가장자리를 계산해야합니다.

+0

나는이 코드 비트에 대해 오류 식을 할당 할 수 없다는 것을 알았습니다. person.center.x = MAX (minCenterX, person.center.x); –

+0

그리고 풍경에있을 때만 왼쪽/오른쪽 가장자리를 멈추게 할 필요가 있습니다. –

+0

아, 예, 한 번에 전체 'center'값을 설정해야합니다. 게시물을 업데이트했습니다. –

관련 문제