Sprite-Kit场景滚动 - Objective-C/iOS
问题描述:
我正在创建一款iPhone游戏,您可以在地形上飞行月球着陆器。背景图像和地形相同,我将地形包裹在碰撞边界中。Sprite-Kit场景滚动 - Objective-C/iOS
我在横向模式下使用ipad,而im使用的背景/地形是ipad屏幕宽度的3倍。
我不想有无限的滚动地图。我试图做的是获得它,以便当着陆器在屏幕的左侧或右侧250点内时,着陆器将不会继续前进,并且后面的地面将会滚动,而仍然给出移动的幻觉。
-(void)update:(NSTimeInterval)currentTime {
if (touching) { // if the user is touching thrust node
CGVector movement = [self getVectorFromRotation:lander.zRotation andMagnitude:12000];
if (lander.position.x > self.frame.size.width - 250) {
// move the background here.?
// example appreciated!
} else {
[lander.physicsBody applyForce: movement ];
}
}
-(CGVector)getVectorFromRotation:(float)radians andMagnitude:(int)mag{
float x = -mag * sin(radians);
float y = mag * cos(radians);
return CGVectorMake(x, y);
}
很明显,我需要停下来时,有没有更多的图像上滚动到屏幕,如果我回去了另一个方向的背景不能移动,直到我来到内的边中的一个250点。
不幸的是,我在屏幕上滚动时找不到的唯一的东西是“玩家”精灵被固定在一个位置,除了每边250点之外,我想要自由移动。
所有帮助表示赞赏。
答
我无法使用物理引擎在sprite工具包中获得所需的效果。这可能是通过其他方式实现的,但我很想重写所有的代码。
在这种情况下,我不得不使用简单地使背景以恒定速度移动的代码。
我可以看到如何做到这一点,但它不会与您当前的代码逻辑。你使用applyForce:来移动你的着陆器,这对物理对象来说很好,但你的背景不是物理对象。这意味着您不能根据着陆器对象的移动轻松地组合背景的移动。你可以做到这一点,如果你选择了一个或另一个,但你想要两个 - 远程对象移动和背景移动。要做你想做的事情,你必须改变你的代码逻辑,以非物理方式移动你的着陆器。例如:x = x + 1。 – sangony