2014-03-06 47 views
0

嗨我正在使用此代碼來滾動我的瓷磚地圖,什麼是實現視差滾動的最佳方式?我找到了一種方法,但是效果不好。 :(Parallax使用Sprite工具包滾動像舊學校snes遊戲

- (void)setViewpointCenter:(CGPoint)position { 
NSInteger x = MAX(position.x, self.size.width/2); 
NSInteger y = MAX(position.y, self.size.height/2); 

x = MIN(x, (self.map.mapSize.width * self.map.tileSize.width) - self.size.width/2); 
y = MIN(y, (self.map.mapSize.height * self.map.tileSize.height) - self.size.height/2); 

CGPoint actualPosition = CGPointMake(x, y); 
CGPoint centerOfView = CGPointMake(self.size.width/2, self.size.height/2); 

CGPoint viewPoint = CGPointSubtract(centerOfView, actualPosition); 
self.map.position = viewPoint; 
} 

謝謝大家的幫助!

回答

0

滾你的背景圖的前景精靈的固定百分比,通常這是在軸線最運動發生在(例如,水平的副作用只是做滾動條和垂直滾動條)

下面的僞代碼,假設你在地圖的左下角開始的一個側滾動器,這個左下角是(0,0),並且軸在你移動時增加up/right

backgroundPercent = 80 
background_x = foreground_x * backgroundPercent/100 
backgroup_y = foreground_y 

使用上述,您的背景地圖只需要與前景一樣寬80%