2014-03-06 19 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%