菜鸟教程小白 发表于 2022-12-13 10:53:02

ios - 使用 SpriteKit 滚动游戏场景


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

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

<p>在这个游戏中,你驾驶汽车(或任何一种疯狂的车辆,实际上 ;))上山。<br/>
现在有一件关于游戏的特别事情我无法理解:<br/><br/>
很明显,每个单独阶段的轨道都不是随机布置的。也就是说,每次播放时轨道的路线始终相同。<br/><br/>
我想学习的是:</p>

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

<p>我的游戏需要滚动两个轴 (x,y)。玩家节点从游戏区域的中心开始,可以四处移动。该区域周围散布着一些障碍物,其中一些最初是不可见的,因为它们位于“游戏世界”的边缘。<br/><br/>
<img src="/image/btOdQ.png" alt=""/>
<br/><br/>我想最简单的解决方案是使用大后台节点,但这对游戏的内存消耗有何影响?<br/><br/>感谢您的帮助!</p ></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我们在 <a href="https://github.com/SpriteKitAlliance/SKAToolKit" rel="noreferrer noopener nofollow">SKATiledMap</a> 中构建了类似的东西.诀窍是将要跟随的对象添加到要滚动的背景中。这也会将背景保留在屏幕上。</p>

<pre><code>-(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 &gt; 0)
            position.x = 0;


      if (position.y &gt; 0)
            position.y = 0;

      //self.mapHeight*self.tileWidth gives you the size of the map in points
      if (position.y &lt; -self.mapHeight*self.tileWidth+self.scene.size.height)
            position.y = -self.mapHeight*self.tileWidth+self.scene.size.height;
      if (position.x &lt; -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));
    }
}
</code></pre>

<p><code>self</code> 在这种情况下是背景,<code>autoFollowNode</code> 是玩家。您可以只使用 <code>self.size.width</code> 而不是 <code>self.mapHeight*self.tileWidth</code> 希望这有意义并且对他有帮助。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用 SpriteKit 滚动游戏场景,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/30525452/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/30525452/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用 SpriteKit 滚动游戏场景