简而言之:如何制作不是无限滚动的gameScene?
我将通过一个示例来说明我要实现的目标:爬坡比赛
在这个游戏中,您在山上驾驶汽车(实际上是任何疯狂的汽车;)。
现在,关于游戏的一件特别的事情我无法理解:
很明显,每个阶段的轨迹都不是随机布置的。即,每次播放时,曲目的路线总是相同的。
我想学的是:
我的游戏需要滚动两个轴(x,y)。玩家节点始于游戏区域的中心,并且可以四处移动。该区域周围散布着一些障碍,其中有些障碍最初并不可见,因为它们位于“游戏世界”的边缘。
我想最简单的解决方案是使用一个大的后台节点,但是这将如何影响游戏的内存消耗?
谢谢你的帮助!
我们在SKATiledMap中构建了类似的内容。技巧是将要跟随的对象添加到要滚动的背景。这还将使背景保持在屏幕上。
-(void)update
{
if (self.autoFollowNode)
{
self.position = CGPointMake(-self.autoFollowNode.position.x+self.scene.size.width/2, -self.autoFollowNode.position.y+self.scene.size.height/2);
//keep map from going off screen
CGPoint position = self.position;
if (position.x > 0)
position.x = 0;
if (position.y > 0)
position.y = 0;
//self.mapHeight*self.tileWidth gives you the size of the map in points
if (position.y < -self.mapHeight*self.tileWidth+self.scene.size.height)
position.y = -self.mapHeight*self.tileWidth+self.scene.size.height;
if (position.x < -self.mapWidth*self.tileWidth+self.scene.size.width)
position.x = -self.mapWidth*self.tileWidth+self.scene.size.width;
self.position = CGPointMake((int)(position.x), (int)(position.y));
}
}
Run Code Online (Sandbox Code Playgroud)
self在这种情况下,背景autoFollowNode是玩家。您可以使用self.size.width“ self.mapHeight*self.tileWidth希望” 代替他的“ 希望”,并且对他有所帮助。
| 归档时间: |
|
| 查看次数: |
659 次 |
| 最近记录: |