Parallax滚动就像使用Sprite工具包的旧学校snes游戏

时间:2014-03-06 03:58:52

标签: objective-c sprite-kit

您好我使用此代码滚动我的瓷砖地图,实现视差滚动的最佳方法是什么?我找到了一种方法,但它并没有很好地发挥作用。 :(

- (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;
}

谢谢大家的帮助!

1 个答案:

答案 0 :(得分:0)

将背景地图滚动为前景精灵的固定百分比。通常情况下,这只是在大多数运动发生的轴上完成(例如,侧向卷轴为水平,向上卷轴为垂直)。

以下伪代码,假设从地图左下角开始的侧卷轴,左下角为(0,0),向上/向右移动时轴增加

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

使用上述内容,您的背景地图只需要与前景的宽度的80%