• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 使用 SpriteKit 滚动游戏场景

[复制链接]
菜鸟教程小白 发表于 2022-12-13 10:53:02 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

简而言之:如何制作不是无限的滚动游戏场景?

我将尝试通过一个例子来解释我想要实现的目标:爬坡赛

在这个游戏中,你驾驶汽车(或任何一种疯狂的车辆,实际上 ;))上山。
现在有一件关于游戏的特别事情我无法理解:

很明显,每个单独阶段的轨道都不是随机布置的。也就是说,每次播放时轨道的路线始终相同。

我想学习的是:

  • 如何创建这样的滚动游戏场景?它是一个巨大的滚动背景节点,还是涉及某种花哨的平铺?

我的游戏需要滚动两个轴 (x,y)。玩家节点从游戏区域的中心开始,可以四处移动。该区域周围散布着一些障碍物,其中一些最初是不可见的,因为它们位于“游戏世界”的边缘。



我想最简单的解决方案是使用大后台节点,但这对游戏的内存消耗有何影响?

感谢您的帮助!



Best Answer-推荐答案


我们在 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));
    }
}

self 在这种情况下是背景,autoFollowNode 是玩家。您可以只使用 self.size.width 而不是 self.mapHeight*self.tileWidth 希望这有意义并且对他有帮助。

关于ios - 使用 SpriteKit 滚动游戏场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30525452/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap