2013-04-12 48 views
0

嗨標題預先總結了它,它使用的是加速度計,但它只是繼續離開屏幕,IM 15,我是有一堆麻煩試圖讓它停在edge.here是我的視圖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'值。我更新了這篇文章。 –

相關問題